2012-03-17 74 views
0

我試圖發送一些信息到一個php文件並顯示返回的結果。首先,我沒有收到來自php文件的任何結果,即xmlhttp.responseText沒有任何值。我嘗試了'something else'而不是responseText,這沒有什麼區別。但是當我註釋掉//if (xmlhttp.readyState==4 && xmlhttp.status==200)時,結果會短暫出現。 我做錯了什麼?爲什麼我有Ajax通信問題?

Ajax代碼看起來是這樣的:

var div = 'display'; 
var xmlhttp; 
if (window.XMLHttpRequest) 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     writeBack (div, xmlhttp.responseText+'something else', 'red'); 
    } 
} 

xmlhttp.open("POST","update_profile2.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("rr="+id); 

PHP代碼:

.. 
if(isset($_POST['rr'])) 
{ 
die('connection made'); 
} 
.. 
+4

我在AJAX上遇到的每個問題通常都是通過嘗試使用表單中的「提交」按鈕提交AJAX請求而導致的。如果你這樣做,確保你停止.submit()....另外,如果你使用jQuery,你的AJAX代碼看起來會好得多:) – donutdan4114 2012-03-17 16:14:59

+0

神聖的廢話,我只是浪費了整整一天,因爲它?謝謝@ donutdan4114,它的工作。 – 2012-03-17 16:18:25

+0

我已經提交我的評論作爲正確的'綠色複選標記'的答案。 – donutdan4114 2012-03-17 17:38:06

回答

1

我曾經有過與AJAX每一個問題通常是由試圖提交使用「提交一個AJAX請求引起'按鈕的形式。如果你這樣做,請確保你停止.submit()....另外,如果你使用jQuery,你的AJAX代碼看起來會好很多:)

0

正如其他用戶用jQuery所說的代碼看起來很多更好。

不過,我敢肯定你的問題是這一行:

xmlhttp.open("POST","update_profile2.php",true); 

請求上述直接訪問的update_profile2.php和回來PHP頁面的全部內容,而不是輸出的頁面闡述。 這就是您訪問該頁面而不詢問Web服務器(使用PHP引擎)爲您提供服務的方式。當然,http調用失敗,所以條件& & xmlhttp.status == 200將阻止下一條填充div的指令的執行。

使用,而不是:

xmlhttp.open("POST","http://localhost/update_profile2.php",true); 

這將發出一個AJAX HTTP請求APACHE,金正日將運行PHP頁面並返回頁面的答案!

+0

「上面的請求直接訪問update_profile2.php並獲取php頁面的全部內容,」 - 不,它不。這是一個HTTP請求。 – 2012-03-17 18:30:16

+0

確定它是一個HTTP請求。但該請求不會發送到Apache Web服務器。其實我在我的機器上測試過它:只有「update_profile2.php」的結果是「?>「所以頁面內容沒有詳細說明。隨着http://localhost/update_profile2.php結果是「你好世界」。所以PHP頁面被php引擎正確執行。 – 2012-03-17 19:06:25

+0

這是因爲您正在使用file://協議瀏覽頁面。 – 2012-03-17 19:09:51