2011-05-13 60 views
4

我有jQuery自動完成與CodeIngiter完美工作時莫名其妙地完全停止運作。當我訪問控制器的自動完成時,我仍然看到正確的數組 - Javascript只是沒有返回JSON數據。是什麼讓這個奇怪的是,它工作正常,然後突然間停止工作。在jQuery自動完成只是...停止工作?

這裏是我的javascript:

$("#clubs-complete").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: 'http://www.myurl.com/create/autocomplete', 
      data: 'term='+$("#clubs-complete").val(), 
      dataType: "json", 
      type: "POST", 
      success: function(data){ 
       alert(data); 
       response(data); 
      } 
    }); 
}, 
minLength: 1 
}); 

這裏是我的控制器:

public function autocomplete() 
{ 
    // Search term from jQuery 
    $term = $this->input->post('term'); 

$this->db->select('name','address2'); 
$this->db->from('clubs'); 
$this->db->like('name', $term); 
$suggestions = $this->db->get()->result(); 

if (count($suggestions) > 0) { 
    $data = array(); 

    foreach ($suggestions as $suggestion) { 
     array_push($data, $suggestion->name); 
    } 

     // Return data 
     echo json_encode($data); 
} 


} 

沒有人有任何想法是怎麼回事? javascript函數中的警報現在不會返回任何內容,並且它已經習慣了。當我直接訪問URL時,我仍然可以看到完整的數組。

請幫忙,我把我的頭髮撕掉了。

+1

有任何改變,要麼在你的控制(jQuery版本等)或可能不受你的控制? (網絡服務器更改)? – 2011-05-13 19:05:00

+0

使用firebug for firefox來調試 – Matthew 2011-05-13 19:09:28

+0

沒有任何改變,不幸的是...它工作,然後它不是,當我編輯代碼的另一部分。當我恢復SVN時 - 沒有任何變化。 – Walker 2011-05-13 19:44:21

回答

4

在IE中有developer tools如果您按F12可用。 Firefox中有類似的東西叫做Firebug。在這兩者中,您都可以調試瀏覽器內的JavaScript。在源fn內部以及成功函數內設置斷點,它可能會給你一些見解。

您也可能希望獲得一個http調試代理,如Fiddler2或Charles,它可讓您看到傳出的HTTP請求及其相應的響應。 Fiddler2在Windows上運行,可以與FF和IE以及幾乎所有其他的http客戶端一起使用。這會讓你看到你的AJAX服務正在返回到瀏覽器內的JavaScript的消息。

這些事情應該讓你洞察「不工作」的問題。