【发布时间】:2011-04-29 13:22:14
【问题描述】:
我使用发布数据向页面 getremote.php 发出发布请求,但 $_POST 数组似乎为空。如果有人能告诉我我做错了什么,将不胜感激。
发出请求的javascript代码是
var postdata = "Content-Type: application/x-www-form-urlencoded\n\nedits=" + this.createEditXMLtext(this.editXMLstruct);
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
dispmes("processing edits");
xmlhttp.open("POST",userProfile.homeurl + "?remoteurl=" + userProfile.homeurl + "&cmdeditprofile&password=password",false);
xmlhttp.send(postdata);
var response = xmlhttp.responseXML;
this.createEditXMLtext(this.editXMLstruct) 只是创建一个字符串
我以前没有遇到过这个问题,并且似乎没有与发布类似问题的其他人相同的解决方案。 userProfile.homeurl + "处的php代码是
header("Content-type: text/xml");
$query = '';
foreach( $_POST as $key => $value ){
$query .= "$key=$value&";
}
echo do_post_request($_GET['remoteurl'] . $qstring,$query);
但字符串 $query 始终为空 - 我通过在文件底部添加 echo $query 来检查它
【问题讨论】:
-
你 100% 确定
POST是空的吗?print_r($_POST);产生了什么? -
我猜应该是Header信息必须和body分开两个\r\n,而不仅仅是\n。 HTTP 1.1 规范: generic-message = start-line *(message-header CRLF) CRLF [ message-body ] start-line = Request-Line |状态行 CRLF = \r\n
-
您当然应该考虑使用 jQuery、Dojo 或 YUI 等 javascript 框架来处理您的 AJAX 请求。
标签: php javascript ajax post