1

そのため、文字列を返すだけのメソッドへの呼び出しを投稿すると、投稿リクエストは responseText フィールドに文字列を含むオブジェクトを返しますが、d.responseText「未定義」が返されます。理由を知っている人はいますか?AJAXだからだと思ったのですが、var dの値が正しいのはなぜですか?

var d = $.post("/home/status_update", function(data) {return data});
console.log(d);
console.log(d.responseText);
4

2 に答える 2

5

$.postpromiseオブジェクトを返します。それを使用してみてください。

var d = $.post("/home/status_update");
d.done(function(data) {
    console.log(data);
});
于 2012-06-21T20:26:36.783 に答える
4

これは、AJAX リクエストでここで見つけた最も一般的なエラーの 1 つですd。多くの人は、AJAXが*A*synchronous であることを認識していません。 AJAX リクエストの完了。

取得した値は、リクエストとレスポンスのラウンドトリップが完了した場合にのみ使用できます。

値が実際に取得された後にのみ実行されることが保証されているため、返された値を 内で実際に使用する必要があります。function(data)

done他のユーザーは、AJAX 要求/応答の完了時に発生するイベントをバインドすることにより、同じものを取得します。わずかに異なる方法でコード化された同じものです。省略形は次のとおりです。

var d = $.post("/home/status_update", function(data) {console.log(data);});

一般的なアプリケーション アーキテクチャとして、単一の関数を使用することを期待できない AJAX 要求では、AJAX が完了するたびに応答を操作する関数を定義することに注意してください。アプリケーションをより「断片化」した方法で考えてみてください。

于 2012-06-21T20:40:54.827 に答える