我想为Ajax.Response()创建语法糖。

像这样:

AjaxGet = function(url) {
  ar = new Ajax.Request(url,
       { onSuccess: function(transport) {
             alert(transport.responseText);
             return transport.responseText;
          }
       });
  return ar.responseText;
}


以便

title = AjaxGet('/favouriteMovie?horrors=true')


将存储到title Ajax请求的变量结果。
但是上面的功能代码不起作用,不返回responseText

最佳答案

仅当使用同步Ajax时才可以这样做,而永远不要这样做。整个浏览器的用户界面在请求期间将无响应,您无法预测。

因此,您能做的最好的事情就是涉及某种回调:

function AjaxGet(url, callback) {
  new Ajax.Request(url, {
    onSuccess: function(xhr){ callback(xhr.responseText) }
  });
}


但是,这种方法存在一些问题:


它不允许您处理XML内容类型。
您将无法设置自定义标题。
您将无法处理任何类型的错误。


由于这些原因,我建议您在需要时使用完整的Ajax.Request

09-04 23:16
查看更多