我有两个jquery ajax方法在页面加载时触发jsonp GET请求。请求方法的形式如下:
function get_1(callback_method)
{
$.ajax({
type: "GET",
url:url_endpoint_1,
async: true,
dataType: "jsonp",
jsonpCallback: 'callback',
success: function(result)
{
callback_method(result);
},
error: function(fail){ console.log(fail); }
});
}
function get_2(callback_method)
{
$.ajax({
type: "GET",
url:url_endpoint_2,
async: true,
dataType: "jsonp",
jsonpCallback: 'callback',
success: function(result)
{
callback_method(result);
},
error: function(fail){ console.log(fail); }
});
}
单独触发时,每种方法都能完美运行。但是,当在页面加载时触发两者时,对get_1的响应将发送到get_2成功处理程序。我做错了什么?
callback_method传递给函数。这是为了将调用抽象到服务器,因为出于不同的原因提出了相同的请求。例如
function alert_user(response)
{
alert(response.text);
}
function log_to_console(response)
{
console.log(response.text);
}
$(document).ready(function()
{
get_1(alert_user);
get_2(log_to_console);
});
和其他地方我可能会打电话
get_1(log_to_console);
答案 0 :(得分:2)
jsonpCallback
选项指定将处理此请求响应的回调的实际名称,它应该是唯一的。
来自jQuery docs for the `jsonpCallback' option:
的引用最好让jQuery生成一个唯一的名称,因为它会成功 更容易管理请求并提供回调和错误 处理
不要将jsonpCallback
选项与jsonp
选项混淆,后者设置了param的名称,该值是生成的回调名称。
例如,如果您设置jsonp: "callback"
,并省略[{1}}选项[您应该],则生成的请求将类似jsonpCallback
,服务器'响应将是http://myUrl/.../?callback=jquery_123456789
,其中jquery_123456789(here_goes_the_response);
是由jQuery生成的函数,它将负责将响应传递给您的成功回调。