2011-10-03 58 views
0

我試圖從page.I獲得JSON代碼中使用此檢測時,Ajax請求的搜索頁面返回0結果顯示HTML

private function __ajax_admin_search($username = '') 
{ 
    $result = $this->admin_login->Admin_Username_Ajax($username); 
    $count = count($result); 
    for ($i = 0;$i < $count;$i++) 
     $arr[$i] = $result[$i]->username; 
    echo (json_encode($arr)); 
} 

前,並嘗試通過的jQuery和JavaScript

$("#AdminSearch").bind("change keyup", function() { 
      var url = "http://localhost/PmMusic/index.php/admin/ajax/admin_search/"+$("#AdminSearch").val(); 
      $.getJSON(url,function(data){ 
       if (data.length == 0) // or arr == null 
       { 
        $("#AutoSearch").hide(1000); 
       } 
       else 
       { 
        $("#AutoSearch").show(1000);  
       } 
      }); 

     });
顯示它

現在我的問題是,我無法檢測到__ajax_admin_search沒有找到任何結果,並且第一個如果(在JavaScript中)不是TRUE(總是爲FALSE)。 當我的php代碼在數據庫中找不到任何結果時,如何在JavaScript中檢測到這些數據。

+1

如果頁面沒有回顯任何內容,那麼您不能只檢查'data'變量是否爲空? – sdleihssirhc

+0

您正在檢查JavaScript變量'arr'中的某些內容,它與您的PHP變量'arr'不同。您將在JavaScript變量'data'中找到您的數據(當由PHP返回時)。那麼你也應該初始化所有的變量,而不是依靠PHP的猜測。 –

回答

4

請務必在for循環之前初始化$arr = Array();

然後,PHP腳本將返回[]作爲JSON對象,您可以在JavaScript中檢測到該對象而沒有問題。

-1

請注意您必須設置正確的MIME類型。你的JavaScript期待json,所以你需要在PHP中設置標題。 JSON文本的MIME媒體類型是應用程序/ json ...

header("Content-type: application/json"); 
+0

當我們在jQuery中使用getJSON時,它意味着獲取json代碼,並將其轉換爲javascript類型的數組。 –

+0

getJSON是一個帶有dataType的AJAX調用的簡寫函數:'json'。如果你迴應json編碼的數據,你必須設置合適的mime類型,否則你的jquery不會將其視爲json。我以前遇到過這個問題,並通過設置正確的標題來解決它。 –