我的javascript代码调用我的php时遇到了一些麻烦。有没有人在下面的代码中看到错误?我发誓我在网站的另一部分使用这样的代码......
var xmlHttp = createXmlHttpRequestObject();
var favSongArray = [];
function createXmlHttpRequestObject(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}
catch(e){
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++){
try{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e){}
}
}
if(!xmlHttp){
alert("Error creating the XMLHttpRequest object.");
}
else{
return xmlHttp;
}
}
function process(){
if(xmlHttp){
alert("sever is available");
//if yes try
try{
xmlHttp.open("GET", "php/getUntimed.php", true);
xmlHttp.onreadystatechange = function(){handleRequestStateChange();};
alert("attempted to call p_handleRequestStateChange_test");
xmlHttp.send(null);
}//end try
catch(e){
alert("Can't connect to server: \n" + e.toString());
}//end catch
}//end if xmlHHttp
}//end function
function handleRequestStateChange(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
try{
u_handleServerResponse();
}//end try
catch(e){
alert("Error reading the response: " +e.toString());
}//end catch
}//end if
else{
alert("There was a problem retriving the data:\n" + xmlHttp.statusText);
}//end else
}//end if
}//end function
function u_handleServerResponse(){
//need to clear array each time
var response = xmlHttp.responseText;
favSongArray = response.split("+");
alert("made it here");
//getFlashMovie("trackTimer").trackTimer(favSongArray[0]);
}
从onSubmit触发器调用process()。我一直得到一个零的xmlHttp.status。这对任何人都有意义吗?感谢
答案 0 :(得分:3)
status == 0
通常表示已中止 - 可以通过按 ESC 或更改当前地址。
或者,由于您使用的是全局 xmlHttp
,因此您可能正在调用 open
和/或 {{1在最后一个请求有时间完成之前。不完全确定是哪一个,但其中一个是通过调用 send
开始的。
答案 1 :(得分:1)
在这里导航。
简单示例:
$.get('MyUrl.aspx', 'MyId=' + id, function(data){
$(data).appendTo($('#MyDiv'));
});
答案 2 :(得分:1)
作为Jonathan Lonowski says,status
== 0表示已中止,并且您说您执行了将触发表单提交的脚本onsubmit
,从而重新加载页面并中止Ajax请求。看一看here。
答案 3 :(得分:0)
为什么不尝试使用ajax框架?例如jQuery。