Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未捕获的SyntaxError:解析JSON时出现意外的令牌错误_Json_Ajax - Fatal编程技术网

未捕获的SyntaxError:解析JSON时出现意外的令牌错误

未捕获的SyntaxError:解析JSON时出现意外的令牌错误,json,ajax,Json,Ajax,我是AJAX新手,似乎我遗漏了一个非常基本的细节 我试图在处理AJAX请求时调试服务器端。代码在服务器端注释掉以下行后运行良好 // php_console ($inputName, ' - Field EMPTY!!!'); 当执行上述行时,在下一行的AJAX success函数中解析JSON数据时,会出现“Uncaught SyntaxError:Unexpected token”错误 var valResponse = $.parseJSON(theResponse); 看起来A

我是AJAX新手,似乎我遗漏了一个非常基本的细节

我试图在处理AJAX请求时调试服务器端。代码在服务器端注释掉以下行后运行良好

//  php_console ($inputName, '  -  Field EMPTY!!!');
当执行上述行时,在下一行的AJAX success函数中解析JSON数据时,会出现“Uncaught SyntaxError:Unexpected token”错误

var valResponse = $.parseJSON(theResponse);
看起来AJAX返回变量“theResponse”在两种方式中都是一样的,至少在我打印它时在视觉上是一样的

$("#contentRight").html(theResponse);
为什么要呼出任何导致parseJSON中断的内容

任何帮助都将不胜感激

以下是AJAX请求:

function performFormValidation(formID, fieldObject, action) {
    formFieldsData  = prepFormDataForAjax (formID);
    var URL      = BASE_DIR + 'formValidation.php'
    var formData = JSON.stringify(formFieldsData);

    $.ajax({
        url:    URL,
        type:   'POST',
        data:   {data:formData},
        success: function(theResponse){
            $("#contentRight").html(theResponse);
            var valResponse = $.parseJSON(theResponse);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert ('Error: ' + errorThrown);
        }
    });
}
以下是AJAX过程:

<?php
$data = json_decode($_POST['data']);
$response = array();

foreach ($data as $dataField) {
    $inputName = $dataField[0][0];
    $formEntry = trim($dataField[0][1]);

    $validData = 1;
    $errorCode = '';
    foreach ($dataField as $pair) {

        //////////////////////////////////////////////////////////
        //  data-rule-required
        //////////////////////////////////////////////////////////
        if ($pair[0] == 'data-rule-required' && $pair[1] == 'true' && isEmpty($formEntry)) {
        //  php_console ($inputName, '  -  Field EMPTY!!!');
            $validData=0; $errorCode=sprintf( _('This field is requided'));
        }
    }
}
echo json_encode($response);
所有PHP echo语句(通常)都直接进入web服务响应——不管您将它放在哪里。所有echo语句都按照代码控制流的顺序追加。在您的例子中,javascript脚本标记作为JSON的一部分出现,并破坏了语法

查看浏览器中的response选项卡以检查确切的响应——您将看到它不是JSON,因此是错误的

function php_console($data, $alert) {
    echo '<script language="javascript">';
    echo 'console.log("' . $data . $alert .'")';
    echo '</script>';
}