这让我感到沮丧...
我正在使用CodeIgniter框架,并且我在AJAX函数中运行良好的php端(并且被称为完美):
function save_new_schedule_set() {
//do stuff...
echo json_encode($arrResult);
}
当我使用逐步调试时,我可以看到IS生成正确的结果,即:
{"id":128}
然而,不知何故,当调用(jquery)函数接收到这个满意的结果时:
function SaveSchedule() {
$.ajaxSetup({
dataType: 'json',
type: "POST",
success: function(data){ alert('Working'); },
error: function(o,c,m) {
alert(m + " : " + o + " : " + c);
}
});
var $url = getPHPinit_AddEvent("base_url") + getLink_AddEvent("save_schedule");
$.post($url, {
"description" : $description,
"start_time" : $startTime,
"end_time" : $endTime
}, "json");
}
它总是触发error()而不是success(),具体来说:
SyntaxError: JSON.parse: unexpected character : [object Object] : parsererror
在检查w / firebug时,错误()。o.responseText包含预期的结果......
{"id":128}
...但是预先有大量的ActiveRecord垃圾,看起来像CodeIgnitor放在那里:
<div style="border: 1px solid rgb(153, 0, 0); padding-left: 20px; margin: 0px 0px 10px;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: array_keys() expects parameter 1 to be array, object given</p>
<p>Filename: database/DB_active_rec.php</p>
<p>Line Number: 1109</p>
</div>
<div style="border: 1px solid rgb(153, 0, 0); padding-left: 20px; margin: 0px 0px 10px;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: sort() expects parameter 1 to be array, null given</p>
<p>Filename: database/DB_active_rec.php</p>
<p>Line Number: 1110</p>
...
</div>{"id":128}
显然所有额外的垃圾都会破坏解析器。
之前有没有人遇到这个问题?我有什么想法可以摆脱它?
感谢 - 你!
PS:这是特别神秘的,因为调用页面有其他AJAX调用正常工作。
答案 0 :(得分:1)
卫生署!问题是由我在php侧的模型类中的代码发出的非致命警告触发的。 Codeignitor正试图将这些警告处理到屏幕上,该屏幕将它们添加到AJAX输出中,从而将其用于json解析器。