Jquery json请求偶尔失败
我试图构建一些东西,遍历列表中的每个项目,获取产品sku,在jsonp请求中包含sku,希望返回一个对象。我有它做所有这些事情,但偶尔失败 因此,脚本的示例在列表元素中循环,获取类以获得正确的id,然后发送请求:Jquery json请求偶尔失败,jquery,ajax,json,jsonp,Jquery,Ajax,Json,Jsonp,我试图构建一些东西,遍历列表中的每个项目,获取产品sku,在jsonp请求中包含sku,希望返回一个对象。我有它做所有这些事情,但偶尔失败 因此,脚本的示例在列表元素中循环,获取类以获得正确的id,然后发送请求: $j(document).ready(function(){ $j('ul.products-grid li a.product-image img').each(function(index){ var prodId = $j(this).attr('clas
$j(document).ready(function(){
$j('ul.products-grid li a.product-image img').each(function(index){
var prodId = $j(this).attr('class').match(/[\d]+$/),
s7jsonReqUrl = '/is/image/z/' + prodId + '/?req=imageset,json';
$j.ajax({
url: s7jsonReqUrl,
dataType: 'jsonp',
jsonp: 'true',
jsonpCallback: 's7jsonResponse',
success: function(response)
{
x = response["IMAGE_SET"];
console.log(x);
},
error: function(data, status)
{
console.log ( 'error : ' + data + ' : ' + status );
}
});
});
})
如果我获取这些URL中的每一个并手动将它们粘贴到浏览器中(来自s7jsonReqUrl变量的URL),它们将返回预期的json对象,即使是上面测试失败的对象。知道这里发生了什么吗?由于jQuery反复定义和重新定义s7jsonResponse,您很可能达到了竞争条件 因为回调参数不是动态的,所以我会用非jquery的方式来实现
window.s7jsonResponse = function(data) {
console.log(data);
};
var sendForJSON = function (prodId) {
var s = document.createElement("script");
s.src = '/is/image/z/' + prodId + '/?req=imageset,json';
document.body.appendChild(s);
};
现在只需使用sendForJSON
获取数据
.each(function(){
var prodId = $j(this).attr('class').match(/[\d]+$/);
sendForJSON(prodId);
})
可能还应该添加逻辑,以便在收到响应后删除脚本标记。您正在发送n个请求,所有请求都希望使用完全相同的jsonp回调。那是自找麻烦。谢谢凯文!这很有帮助。我已经再次陷入困境,我想我会把它扔到这里,看看你是否有任何想法(可能不得不再发一篇这样的帖子)。因此,我现在可以为列表中的每个项目获取所需的变量。万岁!现在,我需要在最初在.each中迭代的每个项之后追加该var(来自json响应)。我迷路了。。所以,若我将类名的另一个参数传递给该追加将要到达的目标,我将如何执行它?从window.s7json响应函数??感谢您提供的更多帮助或想法。您可以从返回的数据中提取prodId,然后使用它获取原始元素Cool是的,我正在处理类似的想法。。有时问这个问题能帮助我把事情想清楚。再次感谢你的帮助!!