2012-11-02 26 views
0

我使用下面的Ajax功能的格式工作部分:的Ajax功能只是時間

var xmlhttp; 

function addAddress(str) 
{ 
if (window.XMLHttpRequest) 
    { 
    xmlhttp = new XMLHttpRequest(); 
    } 
    else 
    { 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() 
    { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
    { 
     //specific selection text 
     document.getElementById('info').innerHTML = xmlhttp.responseText; 
    } 
    } 
    var addAddress = "add"; 
    xmlhttp.open("POST", "sys.php", true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    var queryString = "&addAddress=" + addAddress; 
    xmlhttp.send(queryString); 
} 

function GetXmlHttpObject() 
{ 
if (window.XMLHttpRequest) 
    { 
    return new XMLHttpRequest(); 
    } 
if (windows.ActiveXObject) 
    { 
    return new ActiveXObject("Micorsoft.XMLHTTP"); 
    } 
return null; 
} 

截至目前爲止,我所有的Ajax函數,像上面的,已經運行良好。但是,現在這個功能有時只會起作用。現在,有時我需要點擊幾次onclick事件才能執行該函數,否則函數會掛起,然後大約4分鐘後它就會執行。

我測試的功能部件,發現問題就在於一些在:

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
{ 
    alert(xmlhttp.status); 
    //specific selection text 
    document.getElementById('info').innerHTML = xmlhttp.responseText; 
} 

當該功能的工作,我可以提醒(xmlhttp.status),並得到200元。但是,當它不是工作,警報框甚至不會觸發。事實上,沒有任何事情發生,甚至沒有發生錯誤。

這是服務器問題嗎?我有點認爲我的網站被黑客入侵,但我找不到任何問題接受Ajax功能無法正常執行。

最後,我沒有在我的本地主機上得到這個問題,它只發生在實時網站上。

任何幫助將不勝感激。

感謝

+0

您是否嘗試過不讓您的請求變爲全局變量?把'var xmlhttp;'放在'addAddress'函數中,看看會發生什麼... – anson

+0

嗨,並且,謝謝你的建議。我只是嘗試過,但沒有運氣。我確實在if(window.XMLHttpRequest)中添加了一個警報(xmlhttp.status),並發現當函數掛起幾分鐘時,警報將返回0. – user175328

+0

此外,函數(網站)在我的本地主機。該問題只發生在現場網站上。 – user175328

回答

1

首先剛剛確認,當你點擊按鈕或控制應觸發它的addAddress功能實際上是被調用。

就在這樣的第一行簡單的警報將工作:

function addAddress(str) 
{ 
    alert('addAddress has been called!') 
    .... 
} 

如果你沒有得到警報,確保沒有被阻止的功能頁面上的JavaScript錯誤從跑步。在Firefox中按CTRL + SHIFT + J來查看錯誤控制檯。

如果該部分正在工作,請嘗試將ajax請求的URL直接放入瀏覽器並以此方式進行診斷。

看起來你請求這個網址使用Ajax:

sys.php&addAddress= (address goes here) 

檢查,頁面將在瀏覽器中直接加載。如果沒有,問題不是ajax請求,而是sys.php頁面本身的問題 - 然後您可以深入研究。

希望有幫助!

+0

嗨丹,謝謝你的建議。函數執行警報每次都有效,並且函數底部的alert(queryString)每次都有效。它看起來像是與現狀或狀態有關。我也會嘗試你的其他建議。 – user175328

+0

此外,功能(網站)完美地在我的本地主機上工作。該問題只發生在現場網站上。 – user175328

0

這不是我期待的答案,但我最終讓我的網絡主機(GoDaddy)更換服務器,並解決了問題。近一年來,我用PHP運行IIS7。由於我從來沒有遇到任何問題,我只是繼續使用該服務器。在發生Ajax延遲問題並且無法找出解決方案之後,我想我只需切換到Apache。改變之後,一切又開始順利運行。

我想也許有一個軟件更新,我沒有通知。或者,也許我的網站受到DDoS攻擊,這會降低我的Ajax請求的性能。最後,也許有人進入IIS並更改設置。我不知道,我所知道的只是當服務器切換到Apache時,網站開始正常運行。

感謝大家的建議。