【问题标题】:Receive POST request in PHP from OpenLayers JavaScript从 OpenLayers JavaScript 接收 PHP 中的 POST 请求
【发布时间】: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);
?>

会发生这样的事情:

  1. index.php 收到 POST 请求。
  2. FireBug 还通知 POST 参数包含成功,即已发送的参数。
  3. 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


【解决方案1】:

我认为“数据”属性需要是一个包含键/值对的对象。

例如:

var postrequest = OpenLayers.Request.POST({
        url: "http://localhost/index.php",
        data: {
          userName: "myUsername",
          password: "myPassword"
        },
        headers: {
            "Content-Type": "application/x-www-form-urlencoded"
        }
    });

如果这在您 print_r($_POST) 时有效,您应该会看到 数组(“用户名”=>“我的用户名”,“密码”=>“我的密码”)

【讨论】:

  • 非常感谢您的回答。我更改了代码以发布键/值对。现在我将状态作为键和值“成功”,但 print_r($_POST) 仍然显示空数组。
  • print_r($_REQUEST) 呢?
  • 实际上我得到了它的工作。当我查看 FireBug 中的 PHP 响应时,它告诉我:Array([status] =&gt; success)。我猜print_r($_POST)print_r($_REQUEST) 不应该在 PHP 页面中写文本?
  • 它会编写响应并将其发送给调用请求者,在本例中是您的 AJAX 查询,因此 AJAX 响应包含 php 输出。
【解决方案2】:

我猜你需要包含 XMLHttpRequest.js 库,你可以从这个链接下载它

https://github.com/ilinsky/xmlhttprequest

【讨论】:

    猜你喜欢
    • 2017-07-10
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多