我正在尝试使用POST方法编写XMLHttpRequest。我过去曾使用GET方法设法使用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 :(得分: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, '+');
答案 1 :(得分:-6)
好的,我已经设法对它进行排序。
虽然奇怪的原因,可能是沙盒安全相关,但我没有使用完整的URL地址,我刚刚使用了文件的相对路径,现在它可以工作了。
谢谢大家的支持。