1

これが私のPHPコードです。mongodbからコレクションのリストを取得しています

$list = $db->dbname->listCollections();
$result = array();
$i=0;
foreach ($list as $thiscollection) {
    $result[$i++] = $thiscollection->getName();
}
echo json_encode( $result );

私はコールバックでconsole.logを実行しますが、これが表示されます。

["fruits", "dogs", "cars", "countries"]

問題は、これが配列ではなく文字列であるということです。これらの値を繰り返す必要があります。これを実際のオブジェクトにする方法、またはphpを取得してphp配列ではなくjsonを取得して、parseJSONを使用できるようにする方法。

ありがとう。

js:

$.post('/ajax-database.php', function (data) {
    console.log($.parseJSON(data));
    $.each(data, function (key, value) {
        console.log(value);
    });
});
4

2 に答える 2

3

jqueryを使用しているようです。データをjsonオブジェクトとして返す場合は、2つのうちの1つを実行する必要があります。

  1. phpファイルにheader( "Content-Type:application / json")を追加します。これにより、jqueryはテキストではなくjsonオブジェクトに変換するようになります。

  2. $.postに4番目のパラメータを追加します。

$ .post('/ ajax-database.php'、function(data){
    console.log($。parseJSON(data));
    $ .each(data、function(key、value){
        console.log(value);
    });
}、 "json");

これにより、phpコードが失敗して代わりにhtmlが出力される場合など、jsonではない場合にエラーハンドラーを呼び出すようにjqueryに指示します。本当に$.ajaxを使用する必要があります。なぜ誰かが$.postを使用するのかわかりません。意味のあるエラー処理を行うことはできません。

于 2010-11-27T19:21:59.920 に答える
0

JSON文字列です。それを反復できるようにしたい場合は、それをデコードする必要があります。

于 2010-11-27T19:12:13.110 に答える