未捕获的SyntaxError:解析JSON时出现意外的令牌错误
我是AJAX新手,似乎我遗漏了一个非常基本的细节 我试图在处理AJAX请求时调试服务器端。代码在服务器端注释掉以下行后运行良好未捕获的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
// 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>';
}