我是AJAX的新手,似乎我可能错过了一个非常基本的细节。
我正在尝试在处理AJAX请求时调试服务器端。代码工作正常,服务器端注释掉了以下行。
// php_console ($inputName, ' - Field EMPTY!!!');
执行上面一行时,在AJAX成功函数解析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_console函数:
function php_console($data, $alert) {
echo '<script language="javascript">';
echo 'console.log("' . $data . $alert .'")';
echo '</script>';
}
答案 0 :(得分:0)
所有PHP echo语句(通常)都直接转到Web服务响应 - 无论您将它放在何处。所有echo语句都按照代码控制流的顺序附加。在您的情况下会发生的情况是,javascript脚本标记显示为JSON的一部分并且会破坏语法。
查看浏览器中的响应标签以检查确切的响应 - 您将看到它不是JSON,因此您的错误。