【问题标题】:how to return response from post in a variable? jQuery如何从变量中的帖子返回响应? jQuery
【发布时间】:2011-02-12 02:36:52
【问题描述】:

已编辑: 这就是我需要的:

sendpost = function(a,b,c){
    return jQuery.post('inc/operations.php', {a:b}, c, "json");
},

rotate = function(callback){
    //....
    alert(callback);
}

sendpost('operation', 'test', rotate)

旧帖: 我使用这个函数来返回帖子的响应:

$.sendpost = function(){
    return jQuery.post('inc/operations.php', {'operation':'test'}, "json");
},

我想做这样的事情:

在:

$.another = function(){
  var sendpost = $.sendpost();
  alert(sendpost);
}

但我得到:[object XMLHttpRequest]

如果我打印对象:

jQuery.each(sendpost, function(i, val) {
  $(".displaydetails").append(i + " => " + val + "<br/>");
});

我明白了:

details  abort => function () { x && h.call(x); g("abort"); }
dispatchEvent => function dispatchEvent() { [native code] }
removeEventListener => function removeEventListener() { [native code] }
open => function open() { [native code] }
setRequestHeader => function setRequestHeader() { [native code] }
onreadystatechange => [xpconnect wrapped nsIDOMEventListener]
send => function send() { [native code] }
readyState => 4
status => 200
getResponseHeader => function getResponseHeader() { [native code] }
responseText => mdaaa from php

如何只返回变量中的响应?

【问题讨论】:

  • 你到底为什么要把你所有的函数都放在$里面?
  • 如果我没有得到:$.functionname 不是函数
  • 哭泣。 $ 是 jQuery 对象。如果你正常定义函数(function bar () { alert('Foo'); }),你不要使用$.bar()调用函数,它只是bar()

标签: php jquery return-value


【解决方案1】:

这是不可能的。

AJAX 调用是异步的,这意味着您的代码会在服务器发送回复之前继续运行。

return 语句执行时,服务器还没有回复。

可以进行同步 AJAX 调用,但它会完全冻结浏览器,应不惜一切代价避免。

相反,您应该让您的函数接受一个将接收服务器响应的回调,并从$.post 的回调中调用该回调。 (这就是 jQuery 的 AJAX 函数返回值的方式)

编辑:例如:

$.sendpost = function(callback) {
    return jQuery.post('inc/operations.php', {'operation':'test'}, callback, "json");
};

$.another = function() { 
    $.sendpost(function(response) {
        alert(response);
    });
};

【讨论】:

  • 如何进行回调以接收服务器的响应?你可以发布一个小例子吗?谢谢!
  • 我在 firebug 中收到此错误:'e.success.call 不是函数'
  • 回调参数是post函数完成后要执行的函数名?我可以在那里放一个函数的名称吗?
  • 您可以像我一样传递匿名函数,也可以传递常规函数的名称。 (没有(),因为那会调用函数)
  • 我做了一个函数:$.myalert = function(callback){ alert(callback);我把 myalert , $.myalert, $.myalert() @ 放在帖子的末尾,但是 nopw,不起作用:(
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
相关资源
最近更新 更多