2013-03-01 55 views
0

我有頁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].'"'); 

    } 
} 

return $ json;

回答

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

不設置數據 - 鍵入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應該是這個樣子:如果jQuery的無法檢測它的JSON,而不是純文本「JSON」`避免的問題:

$.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) 
    } 
}); 
+0

不要忘了'數據類型。 – 2013-03-01 15:54:31

+0

@KevinB:那麼,jQuery的9個「受過教育的猜測」是正確的(我沒有看到它出錯一次)。也就是說,一年多來我還沒有使用過jQuery ...... :) – 2013-03-01 16:02:24

相關問題