2010-11-25 82 views
15

我正在嘗試使用POST方法編寫XMLHttpRequest。過去我使用GET方法設法使用XMLHttpRequest,但我正在努力使用POST。AJAX XMLHttpRequest POST

這裏是我的代碼:

var xmlhttp = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

var url = "http://www.mysite.com/script.php"; 
var params = "var=1"; 
xmlhttp.open("POST", url, true); 
xmlhttp.send(params); 

它基本上調用一個PHP腳本,然後增加了一些信息的數據庫。

+0

你得到的錯誤是什麼? – 2010-11-25 10:58:36

+0

沒有錯誤,根據Chrome Inspector的代碼是好的。 – diggersworld 2010-11-25 11:35:12

回答

-6

好吧,我已經成功地排序。

奇怪的原因,但可能是沙箱安全相關的,而不是有完整的URL地址,我剛剛使用相對路徑的文件,現在它的工作。

謝謝大家的支持。

49

您忘記明確設置爲Content-type標題,這在執行POST請求時是必需的。

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

同時,不要忘了使用encodeURIComponent正確編碼的參數,例如:

var params = "var=" + encodeURIComponent("1"); 

(在這個特殊的例子,這是沒有必要的,但使用特殊字符,如+東西的時候會去可怕的錯誤,如果你不編碼參數文本)。

更新 - 你也應該與+取代的%20所有實例,像

var params = params.replace(/%20/g, '+');