javascript - ajax 请求的返回值到另一个函数

标签 javascript ajax prototypejs

我试图从(传输)返回一个值到调用函数,但似乎无法让它工作:

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/

相关文章:

javascript - 表单提交

javascript - AJAX GET 未获取 JSON 编码对象

javascript - 使用 Javascript/Prototype 调整 DIV 大小的简单方法

javascript - 如何确保图像按顺序加载

javascript - instagram/media/recent api 仅获取 lastone 图像

javascript - WebKit 请求未创建文件

javascript - 在 jQuery Form 中, 'success' 在 'beforeSubmit' 完成之前被调用

javascript - 底部的 jQuery,等待 <head> 上的执行脚本,直到它被加载

html - ie9 和 firefox 无法识别 html 标签上的自定义属性

javascript - 使用渲染时,rails 3.0 和 Internet Explorer 9.0 出现 HTTP 406 错误 :update