JSON数据SyntaxError但有效

时间:2017-01-30 22:02:09

标签: php json ajax

我正面临着实施基于PHP的解决方案的挑战,以JSON格式处理数据;

以下是我的PHP文件的内容,显示了为了我的项目而利用AJAX时使用的变量:

<?php
header('Content-Type: application/json');
//
$data .= '$(".POLLDATA_APP'.$k.'_'.$kA.'").text("'.$resDB.'");'; 
//
$res['js'] = $data;
echo json_encode($data);

以下是我的AJAX电话:

$.ajax({
    type: 'POST',
    url: '".$global['serverurl']."system/polldata.php',
    data: $(this).serialize(),
    success: function(data) {
        // on success code here.             
    },
    complete: function(data) {

        var resA = $.parseJSON(data);
        alert('compl'+resA.js);
        //eval(resA.js);

        // Schedule the next
        setTimeout(doAjax, interval);
    }
});

polldata.php文件的响应如下:

"$(\".POLLDATA_APP3_1\").text(\"19\");"

在我的网络浏览器的控制台中,我看到以下错误:

  

“SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符”

我仍然无法找出问题的根源以便解决问题。

我做错了什么,如何解决?

3 个答案:

答案 0 :(得分:0)

尝试使用实际的JSON进行回复

$data = [
    'k'    => $k,
    'kA'   => $kA
    'text' => $resDB
];

echo json_encode($data);
exit;

然后,在您的JavaScript中

success: function(data) {
  var selector = '.POLLDATA_APP' + data.k + '_' + data.kA;
  $(selector).text(data.text);
}

答案 1 :(得分:0)

您尚未指定dataType作为ajax()调用的选项,因此jQuery将使用Content-Type响应标头来确定它是什么类型的数据。

您已经说过application/json所以jQuery会在将JSON传递给complete之前对其进行解析。

当您致电var resA = $.parseJSON(data);时,您正试图解析已解析的数据。

删除该行。直接处理data

答案 2 :(得分:-1)

有时很难理解为什么它不会起作用,所以就像这一次。

如果在工作回调部分工作。我尝试访问“完整”部分,但没有数据,如果我将其更改为“成功”部分 - 所有认为工作正常; - )

    success: function(data) {
            // on success code here.    
var resA = $.parseJSON(data);
            alert('compl'+resA.js);
            //eval(resA.js);         
        },
        complete: function(data) {



            // Schedule the next
            setTimeout(doAjax, interval);
        }
相关问题