Codeigniter破坏Ajax输出?

时间:2012-07-10 21:55:49

标签: php jquery ajax codeigniter

这让我感到沮丧...

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

1 个答案:

答案 0 :(得分:1)

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