2011-10-31 39 views
2

我在PHP中接收POST请求时遇到问题。我正在使用JavaScript通过POST请求将数据发送到PHP页面。 JavaScript的是OpenLayers.js,并发送请求的部分看起来像这样:从OpenLayers接收PHP中的POST请求JavaScript

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函数。

任何建议,在哪里看,以及要尝试什么?

+0

PHP下载它要求在_POST/_GET的任何条目有一个有效的键:值建设 - 你传递一个简单的“成功”字符串,这是令人困惑 - 是一个价值?那么关键是什么?这是一个关键吗?没有价值。您可以尝试从'php:// input'读取原始输入。 –

+0

谢谢马克,我完全错过了重点/价值建设,现在我改变了它。但是print_r($ _ POST)仍然是空的。 – Geolassi

+0

你在做'data:“success = true”'?我不知道openlayers是如何工作的,但它也可以将它作为原始字符串发送。 'data:{success:true}'会改变什么吗? –

回答

5

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

如:

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),你应该看到 阵列( “username” 的=> “名为myUsername”, “密码”=> “MYPASSWORD”)这部作品

+0

非常感谢您的回答。我改变了代码发布一个键/值对。现在我获得状态作为键和值“成功”,但仍然print_r($ _ POST)显示空数组。 – Geolassi

+0

'print_r($ _ REQUEST)'? – James

+0

其实我工作。当我查看FireBug中的PHP响应时,它会告诉:'Array([status] => success)'。我猜'print_r($ _ POST)'和'print_r($ _ REQUEST)'不应该在PHP页面中写文本? – Geolassi