2011-10-03 23 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。我以前遇到过这个问题,并通过设置正确的标题来解决它。 –