2010-11-25 90 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, '+');