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 回答