2011-03-13 2 views
1

그래서 흥미로운 문제가있다. 웹 서비스에 게시 중이며 요청 URI가 너무 길어지고 있습니다. jQuery를이 URL에 내 데이터를 추가 할 것 : 나는 또한 시도jquery Post : 요청 URI가 너무 길다.

// this is dynamically generated, and can get very long 
var s = 'q=string1&q=string2'; 

$.ajax({ 
    type: 'POST', 
    url: 'https://www.googleapis.com/language/translate/v2?', 
    data: s, 
    dataType: 'jsonp' 
}); 

:

data: {data: s} 

같은 일을.

까다로운 부분은 여러 항목을 번역해야한다는 것입니다. Google은 'q'변수를 여러 번 전달해야합니다. 배열은 아니지만 동일한 매개 변수는 여러 번 사용됩니다. 어느 정도 이상하게 보입니다. 따라서 동일한 키를 두 번 사용할 수 없기 때문에 json 객체를 사용하지 않아도됩니다. 그러므로 내가 문자열을 전달해야하는 이유.

어떻게하면이 작업을 수행하고 URI 대신 요청 본문에 데이터를 가져올 수 있습니까?

감사합니다.

답변

8

JSONP POST 요청과 같은 것이 없습니다. JSONP는 스크립트 태그의 src 속성에 매개 변수를 전달하는 것으로 스크립트는 항상 GET으로로드됩니다. $.ajax 호출의 데이터 유형을 jsonp으로 설정하면 jQuery는 type 설정을 무시하고 GET (URI 길이 제한이 적용되는 경우)을 사용합니다. AJAX로 도메인 간 POST 요청을 보내는 것은 possible이지만 다소 복잡하고 대상 서버의 협력이 필요합니다. 그렇지 않으면 일종의 프록시 서버를 사용해야합니다.

-1

X-HTTP-Method-Override ~ GET, 으로 표시되어 이러한 동작이 발생할 수 있습니다.

기본적으로 X-HTTP-Method-Override은 실제 클라이언트의 HTTP 메서드를 재정의하고 요청을 X-HTTP-Method-Override으로 해석하도록합니다.

따라서 요청은 실제로 GET 요청으로 작동 중일 수 있습니다. POST으로 변경하고 결과를 확인하십시오.

+0

요청 본문에 데이터를 저장하는 방법을 알고 싶습니다. 나는 그 머리글을 제거했다. 같은 문제. –

0

대답은 원격 URI에 게시 할 수 없다는 것입니다. 분명히 이것은 jQuery를 통해 허용되지 않습니다. 나 자신의 서버에 게시하고 그에 따라 통화를 전달해야했습니다. jQuery는 허용되기 때문에 요청을 GET 요청으로 변환하려고 시도합니다.

+1

원격 URI에 게시 할 수 있습니다 (jQuery는 내부적으로 지원하지 않지만 1.5 [전송] (http://api.jquery.com/extending-ajax/) 메커니즘을 사용하여 지원을 추가하기는 쉽지만 대부분의 보안 제한으로 인해 쓸모없는 시간. – Tgr