jquery Post:请求uri太长时间

时间:2011-03-13 20:34:58

标签: jquery post

所以这是一个有趣的问题。我发布到一个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吗?

感谢。

3 个答案:

答案 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,看看会发生什么。