2012-10-27 30 views
0

我最近開始學習AJAX,並且正在嘗試一個非常簡單的項目,它涉及捕獲一些表單數據並將其發送到兩個服務器。AJAX新手,在服務器上發佈數據

第一臺服務器是承載網站和服務器端php處理的服務器。這很好

第二個服務器是一個python基本http服務器,它只處理從AJAX發送的POST操作請求。該功能有效,但有點奇怪。

讓我來解釋一下

這是我的AJAX代碼,它是絕對直接的。

function xml_http_post(url, data) { 
    var req = false; 
    try { 
     // Firefox, Opera 8.0+, Safari 
     req = new XMLHttpRequest(); 
    } 
    catch (e) { 
     // Internet Explorer 
     try { 
      req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try { 
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) { 
       alert("Your browser does not support AJAX!"); 
       return false; 
      } 
     } 
    } 

    req.onreadystatechange = function() { 
     if (req.readyState == 4) { 
    //  callback(req); 

     } 
    } 

    req.open("POST", url, true); 
    req.setRequestHeader("Content-type","text/plain"); 
    req.send(data); 
} 

由於我不打算髮回任何迴應,因此就緒狀態更改的回調函數爲空。

但是,當我執行此代碼(由按鈕上的onclick觸發),POST不起作用,服務器似乎沒有收到任何東西。

但最令人驚訝的是,如果我在req.open()中保留一個斷點,然後執行手動步驟執行,那麼它總是有效。這意味着,我想有一些時間問題需要解決。

如果第三個參數「async」設置爲false,但它無論如何都是不合需要的,所以我想使它與async = true一起工作,它工作正常,沒有斷點。

任何幫助將不勝感激。

感謝 希亞姆

+0

您確定自己沒有違反Cross Domain政策嗎? – Jay

回答

0

當我想通了,表單頁面漸漸由被調用的形式B中的第一臺服務器的作用PHP腳本卸載。這導致javascript代碼部分執行或未執行。

所以我想出了同步XHR是我的唯一途徑。