【发布时间】:2011-10-31 18:36:25
【问题描述】:
我在 PHP 中接收 POST 请求时遇到问题。我正在使用 JavaScript 通过 POST 请求将数据发送到 PHP 页面。 JavaScript 来自 OpenLayers.js,发送请求的部分如下所示:
var postrequest = OpenLayers.Request.POST({
url: "http://localhost/index.php",
data: "success",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
});
在 PHP 中,我正在使用这段代码来查看我得到了什么:
<?php
print_r($_POST);
?>
会发生这样的事情:
- index.php 收到 POST 请求。
- FireBug 还通知 POST 参数包含成功,即已发送的参数。
- print_r($_POST);在 index.php 中只给出了这个:array() 并且在 JavaScript 发出 POST 请求后不会改变。
所以数据被发送和接收,但我的 PHP 代码无法理解它,或者我没有使用正确的 PHP 函数。
有什么建议,去哪里看,尝试什么?
【问题讨论】:
-
PHP 要求 _POST/_GET 中的任何条目都具有有效的 key:value 构造——你传递的是一个简单的“成功”字符串,这令人困惑——这是一个值吗?那么关键是什么?是钥匙吗?没有价值。您可以尝试从
php://input读取原始输入。 -
感谢 Marc,我完全错过了键/值构造,现在我改变了它。但是 print_r($_POST) 仍然是空的。
-
你在做
data: "success=true"吗?我不知道 openlayers 是如何工作的,但它也可以将其作为原始字符串发送。data: {success: true}有什么改变吗? -
我在做
data: OpenLayers.Util.getParameterString({status: "success"})。有了这个我得到键/值对作为 POST 请求(FireBug 将其显示为参数:(状态成功)),但 PHP 无法读取它。 -
您找到解决方案了吗?这里有同样的问题。
标签: php javascript post openlayers