PHP JSON_ENCODEは実際のオブジェクトになりません /配列文字列を実際のオブジェクトに作成 / php配列をJSONに変換します

StackOverflow https://stackoverflow.com/questions/4293295

質問

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

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

私はコールバックでコンソールを実行していますが、これが私が見ているものです。

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

問題は、これが配列ではなく文字列であることです。これらの値を繰り返す必要があります。これを実際のオブジェクトに作成するか、PHPをPHPアレイではなくJSONを提供する方法を取得する方法で、Php Arrayを使用できます。

ありがとう。

JS:

$.post('/ajax-database.php', function (data) {
    console.log($.parseJSON(data));
    $.each(data, function (key, value) {
        console.log(value);
    });
});
役に立ちましたか?

解決

JQUERYを使用しているように見えます。データをJSONオブジェクトとして戻したい場合は、2つのことのうち1つを実行する必要があります。

  1. ヘッダー( "content-type:application/json")をPHPファイルに追加すると、jqueryにテキストとしてではなくjsonオブジェクトに変換するように指示します

  2. $ .postにforthパラメーターを追加します。

$.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を使用するのか、意味のあるエラー処理を行うことはできません。

他のヒント

JSON 文字列。あなたがそれを繰り返すことができるようにしたいなら、あなたはそれをデコードする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top