这让我发疯...
我正在使用 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 时,error().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 调用。