2009-08-22 156 views
0

我有一些麻煩,我的JavaScript代碼調用我的PHP。有沒有人在下面的代碼中看到錯誤?我發誓我在網站的另一部分使用的代碼就像這樣...基本xmlHttp問題

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]); 
} 

process()從onSubmit觸發器中調用。我一直得到零的xmlHttp.status。這對任何人都有意義嗎?謝謝

+0

您是否在運行Firebug?服務器是否收到請求? – 2009-08-22 02:32:23

+0

哪裏會顯示螢火蟲? – danwoods 2009-08-22 03:14:03

+0

在網絡或控制檯選項卡中。 – 2009-08-22 03:17:54

回答

3

status == 0通常意味着它被中止 - 或者通過按ESC或通過改變電流地址。

或者,由於您使用的是全球xmlHttp,你可能會被調用open和/或send最後一個請求有時間完成之前。不完全確定哪個,但其中一個通過呼叫abort開始。

1

由於Jonathan Lonowski saysstatus == 0意味着中止,你說你執行該腳本onsubmit這將觸發表單提交,從而重新加載頁面和中止Ajax請求。看看here了。

+0

謝謝,我知道頁面重新加載是以某種方式搞亂它的 – danwoods 2009-08-22 03:29:53