1

jQuery.post クラスを使用して、関数内で応答を返す (警告しない) ことを考えています。

以下は、適切な値でアラートを出します。

function test_func() {
    $.post("test.php", { cmd: "testing" }, function (data) { alert(data); })
}

(適切な値でアラートを表示します)

私は次のことを試しました:

function test_func() {
    return $.post("test.php", { cmd: "testing" }, function (data) { return data; })
}

(返されたオブジェクト)

function test_func() {
    var tmp;
    $.post("test.php", { cmd: "testing" }, function (data) { tmp=data; })
    return tmp;
}

(未定義を返します)

var tmp;

function setTmp(n) {
    tmp=n;
}

function test_func() {
    t=$.post("test.php", { cmd: "testing" }, function (data) { setTmp(data); })
}

(未定義を返します)

function test_func() {
    t=$.post("test.php", { cmd: "testing" })
    return t.responseText;
}

(未定義を返します)

それで、取引は何ですか?「test_func()」がデータ応答テキストを返すようにするにはどうすればよいですか?

4

2 に答える 2

1

非同期リクエストであるため、関数を呼び出すとすぐに応答を取得できません。代わりに、 にfunction渡す$.postは、応答が完了するとすぐに何らかのアクションを実行するコールバックを意図しています。次の点を考慮してください。

function myCallback(response) {
  // do something with `response`...
}

function test_func() {
  $.post("test.php", { cmd: "testing" }, myCallback)
}

応答を直接返す代わりに、必要に応じてmyCallback関数内で操作できます。

于 2012-03-13T05:01:02.697 に答える
0

取り引きは ajax が非同期であるということです。

$.ajaxSetup({
async:false
});

その後

function test_func() {
var temp;
    t=$.post("test.php", { cmd: "testing" })
    return t.responseText;
}

答えは、現在のセットアップを機能させることだけです。それ以外の場合は、それに対処するより良い方法があります

于 2012-03-13T05:04:52.313 に答える