我有返回数组的页面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;
答案 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)
}
});