0

URLからjson応答を取得しようとしています。以下は、私が要求しているphpコードです。

if($_POST){
header('Content-type: application/json');
echo '{"hello":"world"}';
}

以下は私が書いたJavaScriptです:

$('#site').change(function(){

var result;

$.ajax({
    url: "URL",
    data: { param:value },
    type: "POST",
    dataType: "json",
    success: function(data,textStatus,jqXHR) {

     alert(data['hello']); //output: world
     result = data;

    },

});

    alert(result['hello']); //output: nothing (didn't alert) 
    alert(result); //output: undefined

});

だから、私の質問は、データ結果に割り当てるにはどうすればよいですか? ありがとう。

編集:私の質問は、AJAX 呼び出しから応答を返す方法 と重複していますか?

4

2 に答える 2

0

asyncAJAX 要求でパラメーターを設定することで目的の処理を実行できますがfalse、AJAX の非同期の性質を利用して、単純に成功のコールバックで作業を行うことを強くお勧めします。

観察した動作が発生する (または発生しない) のは、AJAX 呼び出しの非同期の性質です。制御の流れは、要求がデータを返す前に、呼び出しを超えて続きます。これは、AJAX 呼び出しが引き続き実行された後のコードであり、要求が完了するまで待機しません。asyncに設定することでそれを強制することもできますがfalse、リクエストが返されるまで、ブラウザで実行されているすべてのコードも停止します。それは、そもそも AJAX リクエストを作成する目的を無効にします。

むしろ、コールバックまたはdeferred.doneを使用してリクエストの完了後に作業をスケジュールし、その非同期性を受け入れることに慣れる必要があります。手続き的に考えるのをやめるには多少の調整が必要ですが、努力する価値はあります。

于 2013-08-28T03:28:08.107 に答える