我正面临着实施基于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列的意外字符”
我仍然无法找出问题的根源以便解决问题。
我做错了什么,如何解决?
答案 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);
}