0

この質問はおそらく何千回も聞かれていることは知っていますが、答えが見つからないようです. ajax-request から返されたデータになりたいですresult。これは、json-data 配列 (の結果console.log(data)) である必要があります。

  var result = $.ajax({
    type: 'GET',
    url: dataPath,
    dataType: 'json',
    success: function(data) {
      console.log(data)
      },
    error: function(){
      //alert("damn");  
      },
    data: {},
    aync: false
  });

  console.log(result); 

ただし、console.log(result);処理方法がわからない奇妙なオブジェクトが返されます。result=ではないのはなぜdataですか?

4

5 に答える 5

1

打ち間違え。

これを変える:

aync: false

に:

async: false

このajaxメソッドは、結果ではなく、リクエストを実行する jqXHR オブジェクトを返します。data呼び出しでパラメーターを使用し、successどこかに保存します。

于 2012-09-30T10:58:02.147 に答える
1

まず、aync: falseコードから を削除します。スペルを書くasync: false必要がありますが、目標を達成するために必要ではありません。実際に行うことは、ブラウザーのユーザー インターフェイス全体をブロックし、ひどいユーザー エクスペリエンスをもたらすことです。AJAX の「A」はAsynchronousを意味することに注意してください。

$.ajax()呼び出しの結果は、データと同じではないプロミスですが、それでもデータを取得するのに役立ちます。特定の方法で使用する必要があるだけです。

変更してみてください:

 console.log(result);

に:

result.done(function (data) { 
    console.log(data);
});

また:

result.done(function (data) { 
    console.dir(data);
});

またはこれでも動作する可能性があります-テストされていません:

result.done(console.dir);

より良い説明については、この回答を参照してください。

于 2012-09-30T10:59:56.737 に答える
0

あなたconsole.log(result)は奇妙なオブジェクトを返すと言いましたが、実際にはこの奇妙なオブジェクトはオブジェクトとして知られていxhr (XMLHttpRequest)ます。

コールsyncronousだからいいねasync: falseが入りやすいからreturned data

var result = $.ajax({...}); // get the xhr object in to result
console.log(result.responseText); // xhr object has a "responseText" property

なぜならresult.responseText、リクエストが完了した後にのみ利用可能になり、リクエストを完了する前に ajax リクエストがすべてにハングアップするconsole.log(result.responseText);ため、完了するasync:false前にこれを実行する機会がないからです。requestsyncronous

successコールバックdataではオブジェクトになりますが、コールバックのdataType: 'json'外ではsuccess、つまりconsole.log(result.responseText);テキストのみになるため、オブジェクトとして使用するには、を使用してオブジェクトに変換する必要があります$.parseJSON(result.responseText)

于 2012-09-30T11:15:44.243 に答える
0

小さなスペルミスがあります aync: false は async: false と読む必要があります。もちろん、リクエストを同期的に実行する必要がある場合、つまりコードの残りの部分がこの結果を待つ必要がある場合を想定しています。

ここでの主な問題は、コンソールに出力しようとしている結果が ajax リクエストによって参照されていないことだと思います。

ajax リクエストによって返されたデータをどのように参照するかは完全にあなたの選択です。あなたは data という単語を選択しました。

したがって、ajax リクエストの結果をコンソールに送信するには、次のことをお勧めします。

var result = $.ajax({
    type: 'GET',
    url: dataPath,
    dataType: 'json',
    success: function(result) {
      console.log(result)
      },
    error: function(){
      //alert("damn");  
      },
    data: {},
    async: false
  });
于 2012-09-30T11:33:45.390 に答える
0

result関数内を初期化しsuccessます。

 var result;
  $.ajax({
        type: 'GET',
        url: dataPath,
        dataType: 'json',
        success: function(data) {
          result = data;
          console.log(data)
          },
        error: function(){
          //alert("damn");  
          },
        data: {},
        async: false
      });

      console.log(result);
于 2012-09-30T11:02:42.953 に答える