SyntaxError:JSON输入意外结束,但PHP文件正常

时间:2019-07-11 13:16:39

标签: javascript php jquery json ajax

我试图显示一些通过JSON / Ajax系统用php检索的数据,但出现此错误: [对象对象] | parsererror | SyntaxError:JSON输入意外结束

我的php脚本正在运行(当我直接在浏览器中键入php文件目录时,可以看到JSON输出):

  "action": "success",
  "message": {
    "statusFin": {
      "txtStatus": "fin"
    },
    "statusCom": {
      "txtStatut": "comm"
    },
    "statusattLiv": {
      "txtStatut": "attLiv"
    },
    "statusLiv": {
      "txtStatut": "Liv"
    },
    "statusFac": {
      "txtStatut": "Fac"
    }
  }
}

我的脚本非常简单,我现在只是尝试显示一条日志消息:

    $.ajax({
          async: false,
          url: DIR_URL + 'ajax/nameOfFile.php',
          type: 'POST',
          data: {'day': day, 'week': week, 'month': month, 'year': year},
          dataType: 'json',
          success: function(datta, status){
            console.log('outpuut AJAX : success ');
          },
          error : function(result, status, errorText){
            console.log('outpuut AJAX : ' + result + ' | ' + status + ' | ' + errorText);
          }
        });

[编辑] PHP文件:

    <?php
$msgErrorJSON = 'und';
$ret = array(
    'action'  => 'erreur',
    'message' => array()
);

$listInfo['statusFin']['txtStatus']         = 'fin';
$listInfo['statusCom']['txtStatut']         = 'comm';
$listInfo['statusattLiv']['txtStatut']      = 'attLiv';
$listInfo['statusLiv']['txtStatut']         = 'Liv';
$listInfo['statusFac']['txtStatut']         = 'Fac';

$ret['action'] = 'success';
$ret['message'] = $listInfo;

$retJSON = json_encode($ret);

echo $retJSON;

总是出现“错误”情况,我得到: [object Object] | parsererror | SyntaxError:JSON输入意外结束

希望我很清楚,谢谢。

3 个答案:

答案 0 :(得分:0)

替换您的ajax并尝试

$.ajax({
      url: DIR_URL + 'ajax/nameOfFile.php',
      type: 'POST',
      data: {'day': day, 'week': week, 'month': month, 'year': year},
      success: function(datta, status){
        console.log('outpuut AJAX : success ');
      },
      error : function(result, status, errorText){
        console.log('outpuut AJAX : ' + result + ' | ' + status + ' | ' + errorText);
      }
    });

并在php $ _POST ['day']中并获取day参数数据,

对于您的$retJSON = json_encode($ret);数据,只需将var obj = JSON.parse(datta);放入ajax成功并在控制台中打印obj

答案 1 :(得分:0)

我认为错误是由于此行引起的。

echo $retJSON;

因为$ restJSON包含数据作为数组,或者可能是带有对象的数组。 使用print_r打印此json。

print_r($retJSON);

答案 2 :(得分:0)

由于2天的等待策略,我无法将答案放在前面(然后我忘记了,对不起),所以这是:映射问题,我忘记在控制器中添加PHP文件路径.... 感谢大家。 祝你有美好的一天。