0

我正在尝试使用 Jquery 发出多个 ajax 请求以从 PHP 文件中获取 Json 数据。这是我的代码:

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.

4

2 回答 2

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]

通过阅读 products[0],您正在访问data.

于 2013-10-20T11:51:25.987 回答
0

这似乎是一个大胆而激进的举措,但是 - 您是否考虑过只获取您真正想要使用的数据?即:products.responseText,config.responseTextsettings.responseText?

于 2013-10-20T11:41:23.840 回答