【问题标题】:PHP script does not accept GET/POST data from a client having AngularJS scriptsPHP 脚本不接受来自具有 AngularJS 脚本的客户端的 GET/POST 数据
【发布时间】:2015-12-23 15:57:33
【问题描述】:

我的客户端应用程序将 json 对象发送到 php 中的服务器。

客户端代码:

 var jacc = JSON.stringify(acc);console.log(acc);
 $http.post($rootScope.url+'signup.php',jacc)
   .then(function(response){console.log(response.data);});

效果很好。

但是在服务器端

 $acc = $_POST["jacc"];
  $code = $_POST["code"];//received later
  if($acc){
     echo 1;//this thing never echoed. 
 }
  elseif ($code  && matchCode($code)){
    if(addAcc($acc))
        echo 1;

}
else echo 0 ." failed";
die();

控制台的输出将始终为“0 failed”。尝试将发布请求更改为 httpbin.org/post 效果很好。所以问题出在我的php脚本上。还尝试了var_dump($_POST),它也返回空值。

【问题讨论】:

  • 你有 2 个回声?回声 0?还有 elseif 而不是 else if?
  • 是的,我确实有 2 个回声。但程序控制根本没有进入那个循环。我总是得到最后一个回声作为输出。并且我的 elseif 没有解析错误。
  • 我猜你发布了一个字符串。但是你需要发布一个带有 key:value 的对象。我们可以看到console.log(jacc) 吗?
  • @NemanjaT elseif 非常好,根据PHP manualPSR-2 Coding Style Guide
  • 我的elseif不好,我想我已经有一段时间没有使用或看到它了,所以我忘记了。不应该去$http.post({ url: $rootScope.url+'signup.php', data: jacc })...吗?或$http.post($rootScope.url+'signup.php', { jacc: jacc })...,来自docs.angularjs.org/api/ng/service/$http的参考

标签: javascript php angularjs ionic-framework ionic


【解决方案1】:

你的 JavaScript 代码应该是这样的:

var params = { jacc : JSON.stringify(acc) };
// or var params = acc; if acc is already an object with the "jacc" property
$http.post($rootScope.url+'signup.php', params)
   .then(function(response){
       console.log(response.data);
   });

您的错误是当您需要发布带有 key:value 的对象时,您尝试发布“字符串”。

【讨论】:

  • 然后给我们更多的东西。例如,您实际发布的内容的控制台日志
  • 无论它有什么内容......它是一个 json 字符串......:P 就像你说的当它作为键值对发送时......它需要到达服务器......:/跨度>
  • 这里是我的 console.log(params) 对象 {jacc: "{"district":"District name","name":"sijin","number":9400xxx857}"}跨度>
  • 用 nodejs 试过.. 接受帖子字符串没有问题:v
  • 你能不能试试:stackoverflow.com/questions/1282909/…
【解决方案2】:

tiltem 拯救了我的一天。感谢 dievardump 的帮助。最后我得到了问题能够修复它。使用 JSON 内容类型时,不会填充 $_POST 数组。我所要做的就是修复它 $rest_json = file_get_contents("php://input"); $_POST = json_decode($rest_json, true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 2015-09-07
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多