Jquery $.when 有多个 Ajax 请求问题


Jquery $.when with multiple Ajax request problems

我正在尝试使用 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,它可以工作。

来自官方文档:

示例:在两个 ajax 请求成功后执行函数。(请参阅 jQuery.ajax() 文档,了解 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

这似乎是一个大胆、激进的举动,但是 - 您是否考虑过只获取您实际想要使用的数据?即:products.responseTextconfig.responseTextsettings.responseText