我试图从(传输)返回一个值到调用函数,但似乎无法让它工作:
function createXMLHttpRequest( w )
{
var urly = '/users/notes/' + w;
var options = {
method:'get'
, onSuccess: function( transport )
{
x = transport.responseText;
return x;
}
, onFailure: function( transport )
{
var response = transport.responseText;
alert( "FAILED "+ response );
}
};
new Ajax.Request( urly, options );
alert( x );
}
var ai = $( 'addItem' );
ai.onclick = function()
{
// -1 indicates new
addnote( -1, null );
}
x
始终警告未定义。除非我将 x
分配给 Ajax.Request
例如x=new Ajax.Request(urly,options)
。然后它会提醒[Object object]
。如何将 transport.responseText
的值返回到 onclick
函数?
最佳答案
您的请求不是asynchronous:false
。因此,x 在请求完成之前收到警报,并将 x
设置为 transport.responseText
。
您必须将请求设置为同步,或者在 onSuccess
方法中提醒 x。
onSuccess 的返回值被 Ajax.Request 丢弃。不要返回任何东西。
Ajax 本质上是异步的。您应该查询服务器,然后在回调中处理响应。因此,您不应尝试在 onclick 函数中使用服务器值,而应在单独的回调(onSuccess 方法)中使用。
关于javascript - ajax 请求的返回值到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470467/