Ajax 経由で PHP スクリプトを呼び出します。PHP 関数は、json_encode()
1 回でエンコードされた連想配列を転送します。
JavaScript コード
var load_institute = $.post("../libraries/load_content.php", {
funct: "getInstituteInformation",
ins_name: "Institut für Informatik",
ins_city: "Kiel"
}, "json");
load_institute.done(function(data) {
console.log("Data: "+data);
console.log("Type: "+typeof data);
console.log("Faculty: "+data['ins_faculty']); // <-- this is how I need it.
}, "json");
関数呼び出しは、有効な JSON 文字列を返します。
コンソール出力
[18:15:27.953] "Data: {"ins_name":"Institut f\u00fcr Informatik","ins_faculty":"Technische Fakult\u00e4t","ins_street":"HRSl","ins_number":"42","ins_postal_code":"24118","ins_city":"Kiel"}"
[18:15:27.953] "Type: string"
[18:15:27.954] "Faculty: undefined"
なぜまだ文字列なのですか?「json」-dataType 属性はすでに解析して正常に戻すべきではありませんか? でやってみました.parseJSON()
。当然、構文エラーが発生します。しかし、返された JSON 文字列を関数に直接挿入すると、.parseJSON()
正常に動作します。
私もすでにこれらを試しました:
- 連想配列の代わりに列挙配列を使用します。運がない。
- 文字列の両側に一重引用符または二重引用符を追加し、再度解析します。運がない。
.ajax()
の代わりに使用し.post()
ます。変化なし。
ここで何が欠けていますか?私の見解では、関数の dataType 宣言はJQuery.post()
JSON 文字列を解析するのに十分なはずです。