0

jQuery で解析しようとすると、不正な JSON になります。ドキュメント全体、データベース接続は UTF-8 でエンコードされています。

コード

header('Content-Type: application/json; charset=utf-8');
echo (json_encode($products));

これは出力されるものです(更新)

{
  "D8": {
    "title": "Green A\/C U\/V Dye Self-Measure bottle treats 32 véhicules 8 oz. (237 ml)",
    "image": "http:\/\/www.supercool.ac\/wp-content\/uploads\/2011\/10\/D8.png",
    "Description": "<ul>\n<li>Efficace dans le R-134a et R-12 systèmes de réfrigération<\/li>\n<li>Detectable when exposed to U\/V light<\/li>\n<li>Compatible avec PAG, ester, les huiles minérales et<\/li>\n<li>Ne contient pas de solvants!<\/li>\n<li>Will not harm A\/C systems or recovery equipment<\/li>\n<li>Universal A\/C Dye Safe for Hybrid and<br \>\n&nbsp;Véhicules électriques<\/li>\n<li>Partie # D8<\/li>\n<\/ul>\n"
  }
}

これはデフォルトでエスケープされるべきではありませんか? それを逃れるにはどうすればよいですか?

アップデート:

json_encode は HTML (説明フィールド) をマングリングしていました。無効な br タグが生成されました<br />。スラッシュに注意してください。これは 5.2.8 に限定されていると思います。これを修正するために、ホストにアップグレードするよう説得できるまで、一時的な解決策として br タグを削除しました。

preg_replace('/\<br\s\/>/', '', string);
4

2 に答える 2

1

http://codepad.org/oWMMVwsE

PHP は utf8 文字をエンコードします。

http://jsfiddle.net/

jQueryはそれをうまく解析できます。

ブラウザにエコーする場合は、ブラウザが utf8 エンコーディングを解釈して文字を表示することを忘れないでください。したがって、json でエンコードされた文字列は、CLI またはソースから読み取る必要があります。

于 2012-06-08T15:35:12.360 に答える
1

出力には、最後のプロパティ値の後に末尾のコンマがあります。

  },
}

これは無効な JSON です。お使いの PHP のコピーには、 の実装が著しく壊れているようですjson_encode

PHP を新たにインストールしたクリーンな仮想マシンでコードを試してみたいと思います。

于 2012-06-08T15:36:49.810 に答える