我正在尝试使用Jquery从PHP文件中获取多个ajax请求。这是我的代码:
var req = $.when($.get('file.php?load=products'),$.get('file.php?load=config'),$.get('file.php?load=settings'));
req.done(function(products,config,settings){
console.log(products);
console.log(config);
console.log(settings);
});
问题在于,不是单独获取Json请求的数据,而是数据附带了其他对象,例如:Object { readyState=4, responseText="[{ "value": 5, "sku": ".../uploads/coffee.png" }]", status=200, more...}]
,当我尝试解析Json数据时会导致错误。
当我通过我的PHP脚本查看返回的参数时,一切看起来都很好,如果我不使用$.when
方法,它甚至可以正常工作,而是使用每个ajax请求的简单回调。
我需要使用$.when
方法,因为我需要在完成这三个ajax调用后执行。
希望你能帮助我,谢谢!
编辑:
好的,我不知道为什么,但是如果我使用products[0]
而不是products
,它就会起作用。
答案 0 :(得分:1)
示例:在两个ajax请求成功后执行一个函数。 (有关ajax请求的成功和错误案例的完整描述,请参阅jQuery.ajax()文档。)
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
if ( /Whip It/.test( data ) ) {
alert( "We got what we came for!" );
}
});
所以你确实收到了一个参数数组,每个ajax调用一个。每个参数都是[data, textStatus, jqXHR]
通过阅读产品[0],您正在访问data
。
答案 1 :(得分:0)
这可能看起来像一个大胆的,激进的举动,但是 - 您是否考虑过只是采用您真正想要使用的数据?那是:products.responseText
,config.responseText
和settings.responseText
?