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、この 3 つの ajax 呼び出しが完了した後で実行する必要があるためです。

あなたが私を助けてくれることを願っています、ありがとう!

編集:わかりました、理由はわかりませんが、products[0]の代わりに: を使用すると機能しproductsます。

4

2 に答える 2

1

公式ドキュメントから:

例: 2 つの 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 呼び出しごとに 1 つの引数の配列を受け取っています。各引数は、[data, textStatus, jqXHR]

products[0] を読み取ることで、 にアクセスしてdataいます。

于 2013-10-20T11:51:25.987 に答える
0

これは大胆で急進的な動きのように思えるかもしれませんが、実際に使用したいデータだけを取得することを考えたことはありますか? つまりproducts.responseText、 、config.responseTextおよびsettings.responseText?

于 2013-10-20T11:41:23.840 に答える