并发 jquery jsonp 响应被发送到错误的成功处理程序
Concurrent jquery jsonp response being sent to wrong success handler
我有两个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成功处理程序。我做错了什么?
编辑 1
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);
jsonpCallback
选项指定将处理此请求响应的回调的实际名称,它应该是唯一的。
引用 jQuery 文档中的 'jsonpCallback' 选项:
最好让jQuery生成一个唯一的名称,因为它会让它 更容易管理请求并提供回调和错误 处理。
不要将 jsonpCallback
选项与 jsonp
选项混淆,后者设置参数的名称,其值是生成的回调名称。
例如,如果您设置jsonp: "callback"
,并省略jsonpCallback
选项[您应该],则生成的请求将类似于http://myUrl/.../?callback=jquery_123456789
,并且服务器的响应将jquery_123456789(here_goes_the_response);
其中jquery_123456789
是由jQuery生成的函数,它将负责将响应传递给您的成功回调。
相关文章:
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- $http服务未触发成功或错误回调
- 在模型上生成自定义主干错误.保存成功
- JQuery Ajax PHP中的错误和成功处理
- XMLHttpRequest:需要使用ajax中的成功和错误函数
- 在 api 调用$resource显示错误和成功消息
- 解析查询.首次成功/错误 间歇性不调用回调
- Ajax响应成功,但无法使用数据(未捕获语法错误:意外标识符)
- 设置jquery按钮,而不是php错误和成功状态
- 如何在php中添加按钮而不是错误状态和成功消息
- AJAX POST成功并错误触发
- 如何从我的js中分离错误和成功按钮
- 未调用成功/错误
- 使用 Raven.js有没有办法确定何时将错误成功记录到 Sentry 服务器
- 使用 $.post 对用户进行身份验证以返回自定义错误/成功消息
- AngularJS$http promise只能分配一个错误/成功函数
- 添加AJAX错误:&成功:打破常规
- Magento:如何在管理面板中使用JS显示标准错误/成功消息
- 云代码需要错误"成功/错误未被调用"去工作
- 在表单提交时返回错误/成功消息的路由