AJAX JSONP调用自动添加回调参数。如何删除?

时间:2012-06-08 19:50:12

标签: jquery ajax jsonp

我的服务很少 - 有干净的网址

并且在调用每个服务时,正在检查URL模式。

现在我正在使用JSONP技术从另一台服务器通过AJAX调用这些URL。

但是,在致电时,它会自动为服务网址添加callback_(timestamp)个参数。

删除时间戳参数 - 添加cache : true。但是无法删除回调参数。

这是我的AJAX调用代码 -

$.ajax({
        type: 'GET',
        url : "http://test.com/test/services/getFollowMeHistory/1/1/50",
        dataType:'jsonp',
        cache : true,
        crossDomain : true,
        //jsonpCallback : false,

        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Error occured while loading Loads."+textStatus);
            }
        });
});

它将URL称为 - http://test.com/test/services/getFollowMeHistory/1/1/50?callback=false,并从服务端获得404。

我的服务是将数据作为 callbackMethod({..JSON RESPONSE ...})返回。因此,它会自动调用我脚本中的function callbackMethod(data)。我的网址中不需要该回调参数。

只需从网址

中删除?callback=...部分即可

Plz帮助。

2 个答案:

答案 0 :(得分:14)

您应该设置jsonp: false而不是jsonpCallback: false。您还应该将jsonpCallback选项明确设置为您希望从服务接收的回调名称。

参考:http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:2)

  1. 如果将缓存设置为true,即将缓存 请求响应,所有后续JSONP调用都不会返回新的 数据

  2. 没有回调JSONP无法使用,因为没有 阅读回复的方式。回调是JSONP的重点。

  3. 您的服务器必须设置为处理JSONP请求。您发送的网址不会影响客户端。所以你的问题必须在服务器端。你应该在哪里处理它。这不是一个jQuery问题。
  4. 如果您使用自定义回调尝试此操作,但自定义回调与删除回调不同:

     jsonpCallback : "callbackMethod"