私のシステムは、PHPでMySQLクエリを実行してデータを取得します。取得されたデータは、以下に似たアレイに構成されている:PHPからJSONへのJSON AJAX経由で16進数の角カッコを渡す
$ret = array(
"name" => "John Doe",
"location" => "Antarctica",
"description" => "Height < 200"
);
私は介してAJAXを介してこれを返す:jqXHR(
echo json_encode($ret);
AJAXエラーイベントが発生し、返されたデータの検査の際にされ.responseText)をChromeコンソールで表示すると、私は気付いています:
"description" : "Height \x3c 200"
これは解析エラーです。
私は\ x3cが "<"という16進数表記であり、そのフォームがJSONを無効にすることは明らかです。私はそれを有効にするための方法を見つけることができないようですが、私は角度付きブラケットをJSONを介して有効な形式で渡すことができます。 PHP側の "\ x3c"の直接の文字列置換は機能しません。
また、AJAXリターンをHTMLとして指定することもできますが、私は一連のデータをJSONを使用して渡しています。デバッグに
echo json_encode($ret, JSON_HEX_TAG);
使用json_last_error()
:
私はJSON.stringify()などのメソッドを経由してAJAX-返されたデータを操作する機会を持っていないので、私は、サードパーティJSコントロールを使用しています。しかし、json_encode()修飾子はcharmのように動作します:) – kaspnord