11

我的服务很少 - 带有干净的 URL

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

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

但是,在调用时,它会自动添加服务 URLcallback_(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)在我的脚本中调用。我的 URL 中不需要那个回调参数。

只需?callback=...要从 URL 中删除部分

请帮忙。

4

2 回答 2

15

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

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

于 2012-06-08T19:57:37.477 回答
3
  1. 如果将缓存设置为trueie 会缓存请求响应,所有后续的 JSONP 调用都不会返回新数据。

  2. 没有回调 JSONP 是不可用的,因为没有办法读取响应。回调是 JSONP 的重点。

  3. 您的服务器必须设置为处理 JSONP 请求。您发送的网址不会影响客户端。所以你的问题必须在服务器端。这是你应该处理它的地方。使这不是 jQuery 问题。

如果您正在使用自定义回调试试这个,但自定义回调与删除回调不同:

 jsonpCallback : "callbackMethod"
于 2012-06-08T19:59:18.697 回答