即使在POST模式下,.ajax()也会将“数据”键值附加到URL

时间:2012-07-08 00:22:12

标签: jquery-ui jquery

这是我的.ajax()调用代码:

    $.ajax({
      type: "POST",
      url: "http://ws.geonames.org/searchJSON",
      dataType: "jsonp",
      data: {
        featureClass: "P",
        style: "full",
        maxRows: 12,
        name_startsWith: request.term
      }

除了使用上述type:"POST"之外,我还尝试在此代码块上方使用$.ajaxSetup({type: "post"});

在这两种情况下,data键中的值都会附加到URL。 我想要一个没有参数的干净网址。这段代码实际上是自动填充字段的一部分,它包含在一个匿名函数中,并给出了一个像主jQueryUI示例的密钥source

注意实际的URL并不重要,我不知道geonames是否支持POST请求,但后来会改变,这只是一个例子。

2 个答案:

答案 0 :(得分:3)

只需添加如下参数:

url: "http://ws.geonames.org/searchJSON/" + param,

如果您想强制发布POST,可以尝试jQuery.post()

答案 1 :(得分:2)

无法使用JSONP数据类型发出POST请求。

JSONP的工作原理是创建一个<script>标记,该标记从其他域执行Javascript,无法使用<script>标记发送POST请求。

如果指定dataType: "jsonp"type: "POST",则“jsonp”会先于先例,并以“GET”请求的形式发送(“POST”会被忽略)。