Javascript 语法糖到原型';s的Ajax函数
我想为Javascript 语法糖到原型';s的Ajax函数,javascript,ajax,prototypejs,syntactic-sugar,Javascript,Ajax,Prototypejs,Syntactic Sugar,我想为Ajax.Response()创建语法糖 像这样: AjaxGet = function(url) { ar = new Ajax.Request(url, { onSuccess: function(transport) { alert(transport.responseText); return transport.responseText; } }); return ar.r
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')
将存储到Ajax请求的变量结果title
。
但是上面的函数代码不起作用,没有返回
responseText
这是ajax调用异步的问题。
更容易的修复方法是在Ajax.Get调用中指定asynchronous:false。
例如:
但是,我建议保留请求的异步功能,然后根据需要调整成功函数回调。只有在使用同步Ajax的情况下才能这样做,而同步Ajax永远都不应该这样做。整个浏览器的用户界面在请求期间将变得无响应,您无法预测 因此,您所能做的最好包括某种回调:
function AjaxGet(url, callback) {
new Ajax.Request(url, {
onSuccess: function(xhr){ callback(xhr.responseText) }
});
}
不过,这种方法存在一些问题:
出于这些原因,我建议您在需要时使用完整的
Ajax.Request
。在我的方法中不使用这种方法似乎非常合理。我将使用Ajax.Request。谢谢同意,保留异步功能是正确的方法。谢谢你的指点!
function AjaxGet(url, callback) {
new Ajax.Request(url, {
onSuccess: function(xhr){ callback(xhr.responseText) }
});
}