PHP JSON_ENCODEは実際のオブジェクトになりません /配列文字列を実際のオブジェクトに作成 / php配列をJSONに変換します
-
28-09-2019 - |
質問
これが私の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つを実行する必要があります。
ヘッダー( "content-type:application/json")をPHPファイルに追加すると、jqueryにテキストとしてではなくjsonオブジェクトに変換するように指示します
$ .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 は 文字列。あなたがそれを繰り返すことができるようにしたいなら、あなたはそれをデコードする必要があります。
所属していません StackOverflow