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


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

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

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

但是,在打电话时,它的补充 callback 和 _(timestamp) 具有服务URL的参数,自动进行。

通过添加删除时间戳参数 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

Plz的帮助。


5092
2018-06-08 19:50


起源

这是JSONP,这就是JSONP。 - Dave Newton
callback参数告诉服务器返回带有数据的回调。 - Kevin B
从服务方面 - 我返回json as-“callbackMethod({... json response ..})”。因此它会在我的脚本中自动调用“function callbackMethod(data)”。 - Avi C
在这里干嘛 stackoverflow.com/questions/6555172/... - Ivaylo Nikolov


答案:


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

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


14
2018-06-08 19:57



我没有测试它,只是阅读文档,但显然有 jsonp: false,jQuery不会通过 callback 参数,但仍然期望JSONP响应;这就是它需要的原因 jsonpCallback 根据服务器的预期,显式声明要创建的回调函数的名称的参数。 - lanzz
谢谢,但它是一个真正的跨域调用 - Avi C
+1,如果你不想使用回调参数,这绝对是你要走的路。 - Kevin B
@AviC,这是对的。它仍然是一个jsonp调用,因为 dataType: "jsonp", 在那儿。 - Jonathan M


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

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

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

如果您使用自定义回调尝试此操作,但自定义回调与删除回调不同:

 jsonpCallback : "callbackMethod"

2
2018-06-08 19:59



从服务方面 - 我返回json as-“callbackMethod({... json response ..})”。因此它会在我的脚本中自动调用“function callbackMethod(data)”。我不需要那个回调参数。 - Avi C
我已经更新了我的答案。 - Fresheyeball