0

这让我发疯...

我正在使用 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 调用。

4

1 回答 1

1

嗬!问题是由我在 php 端的模型类中的代码发出的非致命警告触发的。Codeignitor 正在尝试将这些警告处理到屏幕上,这会将它们添加到 AJAX 输出中,从而将其用于 json 解析器。

于 2012-07-10T22:14:23.607 回答