Cordova:无法使用$ _POST在服务器端获取请求参数值

时间:2015-05-22 08:12:49

标签: php angularjs cordova ionic-framework

我正在为我的一个webapp开发移动应用程序,其所有数据都驻留在服务器上。在发布请求数据将以JSON格式响应发送。我正在按照以下方式发布帖子请求:

$http.defaults.headers.post['Content-Type'] ='application/x-www-form-urlencoded';
$http.post(base_url+"get/memberLogin.php", {'username':userName, 'password':passWord, 'tempKey':'XHJJUQWERgfrbbbbokaw1222344'}...

数据在post请求中发送,因为我可以在firefox浏览器的firebug中看到。但是在服务器端,当我var_dump($_POST)var_dump($_REQUEST)我得到空数组。怎么会这样???由于我在服务器上发布数据,因此应使用$_POST进行捕获但不起作用

相反,如果我以下列格式发送数据:

$http.post(base_url+"get/memberLogin.php?username="+userName+"&password="+passWord, {}...

我使用$_REQUEST在服务器端获取参数值。 $_POST ??

有什么问题

1 个答案:

答案 0 :(得分:1)

  

但是在服务器端,当我执行var_dump($ _ POST)或var_dump($ _ REQUEST)时,我得到的是空数组。

当您将内容类型设置为application / x-www-form-urlencoded时,Angular会将数据编码为JSON。

PHP无法解析它(因为它不是application / x-www-form-urlencoded)所以它没有数据填充$_POST

  

我使用$ _REQUEST在服务器端获取参数值。 $ _POST ??

有什么问题

PHP有愚蠢的命名约定。

$_GET不包含GET请求中的所有数据。它包含查询字符串中的数据。

$_POST不包含POST请求中的所有数据。它包含来自请求正文的数据。

此:

$http.post(base_url+"get/memberLogin.php?username="+userName+"&password="+passWord

...发出POST请求,但是您将所有数据放在查询字符串中(首先应该通过encodeURIComponent传递它)。