没有来自PHP的JSON请求响应

时间:2016-03-08 07:08:11

标签: javascript php json

我试图通过JSON来处理PHP并返回示例,但是无法弄清楚为什么在将dataType设置为json时无法获得成功响应。关于我需要做什么以及在哪里找到一个好的教程的任何帮助将不胜感激。谢谢!

  var selected = $('#getID').val();
$.ajax({
    url: 'includes/ajaxCalls.php',
    type: "POST",
    data: {action: 'test', id: selected},
    dataType: 'json',
    success: function (results) {
        alert("completed");
    },
    fail: function (data) {
        console.log('Could not get posts, server response');
    }
});

PHP

if (isset($_POST['action']) && !empty($_POST['action'])) {
   $action = json_decode($_POST['action']);
   switch ($action) {
    case 'test' : test();
        break;
    case 'blah' : blah();
        break;
    default:
        echo "hello";
  }
}
  function test() {
   header("Content-Type: application/json", true);
  $array = array(0,1,2,3);
  echo json_encode($array);
}

2 个答案:

答案 0 :(得分:2)

您需要修复PHP代码的一些事情,

1)你不必在$_POST['action']上调用json_decode,你有一个字符串in action变量,所以你只需要调用$ _POST [' action'],don&#39 ; t必须将它传递给json_decode。当数据是JSON字符串然后在PHP中转换为数组时使用json_decode。

2)不要在你已经从你的AJAX调用请求JSON数据的test()中设置标题,并且从你的服务器(即PHP)中回设JSON数据,这样你就不会#39 ; t必须在这里明确设置标题。

$action = json_decode($_POST['action']);更改为$action = $_POST['action'];

答案 1 :(得分:1)

$action = json_decode($_POST['action']);更改为$action = $_POST['action'];