我正在为我的一个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
??
答案 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
传递它)。