2012-07-10 65 views
0

這是推動我瘋狂......Codeigniter破壞Ajax輸出?

我現在用的是笨的框架,並在其中我有AJAX功能工作的我漂亮的PHP端(&被稱爲)完美:

function save_new_schedule_set() { 
    //do stuff... 
    echo json_encode($arrResult); 
} 

這,當我使用單步調試,我可以看到的是產生正確的結果,即:

{"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"); 
} 

它總是會觸發錯誤(),而不是成功(),具體做法是:。

SyntaxError: JSON.parse: unexpected character : [object Object] : parsererror 

經檢查瓦特/螢火蟲,誤差()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

Doh!問題是由php模型類中的代碼發出的非致命警告觸發的。 Codeignitor正試圖將這些警告處理到屏幕上,屏幕將這些警告添加到AJAX輸出中,從而將其添加到json解析器中。

+0

D'oh!我一直在我正在工作的網站上遇到這個問題。我們最終添加了一個標誌('debuginfo = on'),以便我們可以打開/關閉錯誤。然後,您可以在單獨的選項卡中單獨提出請求並查看錯誤。好找! – lbstr 2012-07-10 22:23:03

+0

如果代碼語的衆神添加了某種類型的功能標誌(如fname = [fname] _ajax),使其內置的錯誤處理功能更多地與AJAX兼容,這會不會很酷?就像通過在json_encode()輸出中自動返回它而不是將其推送到屏幕一樣?具有相同的功能?請張貼在這裏! – 2012-07-10 22:30:12

+0

[這篇文章有一些關於如何抑制錯誤/警告和其他可能有用的建議。](http://codeigniter.com/forums/viewthread/125687/) – lbstr 2012-07-10 22:47:26