这是我的jQuery函数:
function MyJSON(query){
$.ajaxSetup({
cache: false,
jsonpCallback: 'SmartShopCallback',
dataType: 'jsonp'
});
$.getJSON( api+query+'&jsoncallback=?', function( data ) {
if (data['cmd']){
if (data['cmd'] == 'ListProducts' && data['products']){
DisplayProducts(data['products']);
} else if (data['cmd'] == 'ProductSizes' && data['sizes']) {
DisplayProductSizes(data['sizes']);
} else if (data['cmd'] == 'ColorOptions' && data['colors']) {
DisplayColorOptions(data['colors']);
}
}
}).fail(function(jqxhr){
$('#ss_msg').html('An error occured while receiving data');
alert(jqxhr.responseText);
});
}
.fail()
回调函数仅在&cmd=ColorOptions
时触发,仅在$.getJSON
函数的第二次调用时触发。第三次,第二次,等等。 。 。没问题!
jqxhr.responseText
似乎未定义。
现在,这就是我解决它的方法:
function SmartShopJSON(query){
$.ajaxSetup({
cache: false,
jsonpCallback: 'SmartShopCallback',
dataType: 'jsonp'
});
$.getJSON( api+query+'&jsoncallback=?', function( data ) {
...
Bla Bla Bla
...
}).fail(function(jqxhr){
$('#ss_msg').html('An error occured while receiving data');
alert(jqxhr.responseText);
});
var dummy = data['cmd'];
}
请注意我的修复'最后使用var dummy = data['cmd'];
。这太疯狂了,但是做到了!当我删除此行时,错误会恢复!
由于alert(data['cmd'])
作为测试不仅给出了正确的响应,而且还阻止了.fail()的触发,这就是解决方案!
但为什么呢?我想知道为什么我首先得到错误!有什么想法吗?