如何在jquery中使用$ .ajax获取数组

时间:2013-03-01 15:02:49

标签: php jquery ajax

我有返回数组的页面getorgname.php所以如何使用$ .ajax方法在我的jquery页面中获取数组?

$ds = my_ldap_connect(CHI_LDAP_LOCATION, CHI_LDAP_PORT, CHI_LDAP_USE_TLS);
$groups = get_all_groups($ds, CHI_LDAP_BASE_DN, CHI_LDAP_BIND_DIRECTORY, CHI_LDAP_BIND_PASSWORD);
$sr = @ldap_search($ds, "ou=people,".CHI_LDAP_BASE_DN, "(uid=*)");
$nt = ldap_get_entries( $ds, $sr );
//echo "<pre>";
//print_r($nt);
//echo "</pre>";
foreach( $nt as $each )
{
    if( is_array( $each ) )
    {

        $json[] = trim('"'.$each['o'][0].'"');

    }
}

返回$ json;

2 个答案:

答案 0 :(得分:2)

设置适当的json标头以提供json并以json格式打印数组:

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json'); 

//create your array here

echo json_encode(array);

然后使用jQuery在客户端接收数组:

$.ajax({
   url: 'getorgname.php',
   dataType: 'json',
   success: function(data){
       //the 'data' object contains your array
       //do stuff with it here
   }
});

答案 1 :(得分:1)

如果没有在jQ的$.ajax调用中设置数据类型,只需使用echo构造而不是return,那么您应该没问题。如果你开始搞乱标题,你很快就会遇到麻烦:
如果尚未生成输出,则只能设置标题,因此请小心:缓冲区,或将header调用保持在最顶层。只是知道你在做什么

在你的情况下,以echo json_encode($json);结尾可以解决问题:

foreach( $nt as $each )
{
    if( is_array( $each ) )
    {
        $json[] = trim($each['o'][0]);
    }
}
echo json_encode($json);

这就是你需要做的全部,你不必手动格式化JSON。你的jQ应该是这样的:

$.ajax({
    url: 'yourscript.php',
    data: yourRequestObject,
    success: function(response)
    {
        console.log(response);//this'll be either an array or an object (assoc array's are objects in JS)
    }
});