AJAX を使用して PHP ページにデータを投稿していますが、デコードできません。json_decode()
NULL を返しました。だから私はそれをエコーするなら、jsonlintを介して実行できると考えました。しかし、何も表示されませんでした。データが PHP ページに到達するかどうかを確認するために、データを試してみましvar_dump()
た。奇妙なことに、次のことが示されました。
string(75) "{\"title\":\"fds\",\"body\":\"fds\",\"tags\":\"fds\",\"type\":\"question\"}"
したがって、データはページに到達します。バックスラッシュを削除した後、jsonlint を実行したところ、JSON が有効であると表示されました。これはどのように可能ですか?
var_dump()
jsonlintに従って 75 文字の有効な JSON 文字列を取得しましたが、echo
それができませんjson_decode()
。
編集:
どうやら私は何か間違ったことをしたようです。今それをエコーできます(おそらく$_POST
配列キーにタイプミスを犯しました)。これは次のように繰り返されます。
{\"title\":\"tre\",\"body\":\"tre\",\"tags\":\"tre\",\"type\":\"question\"}
繰り返しますが、バックスラッシュがなければ、JSONLint は有効な JSON であることを示しています。
編集 2:
PHP コードは次のとおりです。
// code to check if the user is logged in
$post = json_decode($_POST['q']);
echo "var_dump(\$_POST['q']): ";
var_dump($_POST['q']);
echo "<BR /><BR />";
echo "var_dump(\$post): ";
var_dump($post);
出力:
var_dump($_POST['q']): string(74) "{\"title\":\"gfd\",\"body\":\"gf\",\"tags\":\"gfd\",\"type\":\"question\"}"
var_dump($post): NULL
JS コード:
var simpleObj = {title: "rew", body: "rew", tags: "rew", type: "question"};
$.post('savepost.php', "q=" + JSON.stringify(simpleObj), function(data) {
$('#resultDiv').html("DATA: " + data);
});
最終編集:
最終的に自分で解決しました。私は質問する前から実際に問題を発見しましたが、それは「無害」であり、それがこの問題を引き起こす可能性があるとは考えていませんでした.