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

    }
}

$json を返します。

4

2 に答える 2

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
   }
});
于 2013-03-01T15:06:40.790 に答える
1

jQ の$.ajax呼び出しで data-type を設定せずに、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)
    }
});
于 2013-03-01T15:43:13.017 に答える