Javascript Ajax请求返回未定义的结果
我对Ajax请求(基本功能)有问题 这里是ajax函数Javascript Ajax请求返回未定义的结果,javascript,ajax,ajax-request,Javascript,Ajax,Ajax Request,我对Ajax请求(基本功能)有问题 这里是ajax函数 function ajax(){ var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] if (window.ActiveXObject){ for (var i=0; i<activexmodes.length; i++){ try{ return new ActiveXObject(activexmodes[i]) } catch(e)
function ajax(){
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
if (window.ActiveXObject){
for (var i=0; i<activexmodes.length; i++){
try{
return new ActiveXObject(activexmodes[i])
}
catch(e){
}
}
}
else if (window.XMLHttpRequest)
return new XMLHttpRequest()
else
return false
}
_2xm.load = function (p, type)
{
p = p.replace("frame_", "");
loading(type);
var req=new ajax();
var __page =encodeURIComponent(p);
req.open("GET", "page.php?page="+__page, true);
req.send(null);
req.onreadystatechange=function(){
if (req.readyState==4)
{
if (req.status==200 || window.location.href.indexOf("http")==-1)
{
loading(2);
return req.responseText;
}
else
{
loading(2);
return "An error was occured.... ";
}
}
}
}
下面是使用\u 2xm.load()
函数的部分代码:
_2xm.loadData = [_2xm.load(pg, 0), _2xm.now(), _2xm.interval * 60];
但是结果总是
未定义
,为什么?您从未从\u 2xm.load
返回值,因此函数隐式计算为未定义
您只能从绑定到req.onreadystatechange
的匿名函数回调返回值,该回调在对\u 2xm.load
的函数调用完成很久之后的某个后期异步触发
也许你应该考虑同步请求。
我喜欢你的<代码> Ajax()>代码>仔细考虑错误情况,并返回< <代码> false <代码> >当<代码> XmlHttpRequest < /代码>对象不能被创建时…然后你的\u2xm.load
完全忽略了这一点。谢谢,但是如何创建一个函数来发送一个请求,这将是一个“同步请求”@John:无论你在XMLHttpRequest
中使用什么文档,都要找到其中关于同步请求的部分。