2

誰かがこの振る舞いを説明できますか?

この場合:

header("Content-type: text/html");
echo json_encode("error_101");

できます。

この他の場合:

header("Content-type: application/json");
echo json_encode("error_101");

それは機能しません(無限の読み込み)。

しかし、配列をjson_encodeに渡すと、両方の方法で機能するため、この問題はjson値でのみ発生します

バグのようです!

4

1 に答える 1

2

json テキストの最も外側のデータ型は、配列またはオブジェクトである必要があります。

JSON 文法

JSON テキストは一連のトークンです。トークンのセットには、6 つの構造文字、文字列、数字、および 3 つのリテラル名が含まれます。

JSON テキストは、シリアル化されたオブジェクトまたは配列です。

  JSON-text = object / array

http://www.ietf.org/rfc/rfc4627.txt

PHP のjson_encode関数に文字列を渡すと、(エラーをスローする代わりに) JavaScript でエンコードされた文字列として出力されます。これはバグだと思います。

おそらく、このスクリプトに対して HTTP 要求を行っているものはすべて、無効な JSON 応答で問題を抱えていますが、無効な HTML のエラー回復は改善されています。

于 2012-06-07T14:34:54.910 に答える