2014-02-19 5 views
0

내 서비스 (RESTful JAX-RS)가 다음과 같은 값을받습니다.body 및 queryparam의 데이터를 prototype.js로 보내는 방법은 무엇입니까?

public Response methodName(String content, 
     @QueryParam("valueONE") String one, 
     @QueryParam("valueTWO") String two, 
     @QueryParam("valueTHREE") String three) 

Ajax 호출에서 해당 서비스에 값을 전달해야합니다. 내 시나리오에서는 아래와 같이 시도했습니다. 그것은 나에게 효과가 없다.

try { 
    new Ajax.Request(url, { 
     method : 'post', 
     postBody : { 
      Object.toJSON(content), 
      valueONE : one, 
      valueTWO : two, 
      valueTHREE : three, 
     }, 
     onSuccess : function(response) { 
      alert('Success Response' + response.responseText); 
     }, 
     onFailure : function(response) { 
      alert('Request has not been hit to the server.' 
        + response.responseText); 
     } 
    }); 
} catch (err) {txt = "_____ERROR_____\n\n"; 
     txt += "ERROR DESCRIPTION : " + err.message + "\n\n"; 
     txt +=" Click OK to continue."; 
     alert(txt); 
} 

Prototype.js에서 queryparameter뿐만 아니라 body를 통해 값을 전달하는 방법을 모릅니다. 어떤 도움이라도 대단히 감사합니다.

감사합니다, ArunRaj

답변

2

요청 방법은 게시물입니다, 당신이 요청에 설정된 매개 변수는 요청의 본문에 전송됩니다. 보내시는 URL의 쿼리 문자열 매개 변수를 수동으로 빌드하는 것도 가능하지만 POST (즉, 사이드카 GET 포함)를 보내는 올바른 방법은 아닙니다.

new Ajax.Request('path/to/server', { 
    parameters: { 
    foo: 'One', 
    bar: 'Two', 
    baz: 'Three' 
    } 
}); 

이렇게하면 요청 본문에 채워지는 POST 변수 [foo, bar, baz]가 생성됩니다. 해당 서버의 이완에 따라, GET 변수 [야유, blarg]의 세트와 함께 동일한 POST 될 수

new Ajax.Request('path/to/server?boo=Four&blarg=Five', { 
    parameters: { 
    foo: 'One', 
    bar: 'Two', 
    baz: 'Three' 
    } 
}); 

은 질의 문에 의해 채워지. PHP 서버에서는 REQUEST 전역 객체에 대조되며, 동일한 이름의 GET 변수는 POST에 상응하는 것으로 겹쳐 쓰여 지므로 두 양식 데이터 세트를 각각 따로 질문 할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 그리고 정말로 혼란스러운 방식으로 질문을합니다. 나는 그것이 당신이 우회당한 이유라고 생각합니다. 그것을 명확하게하겠습니다. 내 서버 쪽. 나는 3 개의 queryString 값을 가지고 있고 하나의 문자열은 queryString이 없다. 동일한 Ajax 호출에서 queryString과 with queryString을 전달하는 방법. – ArunRaj

+0

변수를 값으로 설정하는 방법. 예 : var value1 = document.getElementById ('result'). value; ...... 매개 변수 : {foo : value1} .... 올바른 코드 방법입니다. 나는 실수를하고 있다고 생각한다. 이것이 URL에 값이 전달되는 이유입니다. – ArunRaj

+0

위와 같은 Ajax 코드를 사용할 수는 있지만 메소드에 'get'을 추가하면됩니다 :'new Ajax.Request ('/ url/on/server', {method : 'get', parameters : { foo : 'bar', baz : 'boo'}}))' – Walter