所以这是一个有趣的问题。我发布到一个Web服务,我得到的请求URI太长了。 jQuery似乎将我的数据附加到URL:
// 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吗?
感谢。
答案 0 :(得分:8)
没有JSONP POST请求。 JSONP是关于在脚本标记的src
属性中传递参数,并且脚本始终使用GET加载。如果将$.ajax
调用的数据类型设置为jsonp
,jQuery将忽略type
设置并使用GET(适用URI长度限制)。使用AJAX发送跨域POST请求是possible,但相当复杂,需要目标服务器的配合。否则,您需要使用某种代理服务器。
答案 1 :(得分:0)
答案是您无法发布到远程URI。显然这是不允许通过jQuery。我必须发布到我自己的服务器,然后相应地传递呼叫。
答案 2 :(得分:-1)
我注意到您已将X-HTTP-Method-Override
设置为GET
,
这可能是造成这种行为的可能原因。
本质上X-HTTP-Method-Override
的作用是告诉Restful客户端覆盖实际的HTTP方法,并将请求解释为X-HTTP-Method-Override
设置为。
因此,请求实际上可能是GET
请求。
尝试将其更改为POST
,看看会发生什么。