0

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()正常に動作します。

私もすでにこれらを試しました:

  1. 連想配列の代わりに列挙配列を使用します。運がない。
  2. 文字列の両側に一重引用符または二重引用符を追加し、再度解析します。運がない。
  3. .ajax()の代わりに使用し.post()ます。変化なし。

ここで何が欠けていますか?私の見解では、関数の dataType 宣言はJQuery.post()JSON 文字列を解析するのに十分なはずです。

4

1 に答える 1

4

PHP スクリプトで正しいヘッダーを送信していますか? データ ヘッダーの応答がプレーン テキストの場合、JQuery は JSON を解析しないためです。

于 2013-08-24T16:40:11.240 に答える