56

次の方法で、多次元 Javascript 配列をサイトの別のページに渡そうとしています。

  • 配列で JSON.stringify を使用する

  • 結果の値を入力フィールドに割り当てる

  • そのフィールドを2番目のページに投稿する

  • 投稿された値に json_decode を使用する

  • 次に、テストする var_dump

  • (投稿された変数を直接エコーして、それがまったく通過したかどうかを確認します)

1 ページ目の Javascript:

var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;

2 ページ目の php:

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);

エコーは正常に機能しますが、var_dump は NULL を返します

私は何を間違えましたか?


これで直りました:

$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);

理由はわかりませんが、文字列内の各変数を区切る「\」文字の束が投稿に含まれていました

json_last_error()戻ってきたバートによって提案されたように使用してそれを理解しましたJSON_ERROR_SYNTAX

4

7 に答える 7

47

JSON.stringify() を使用してデータを保存し、それを php で読み取る必要がある場合。次のコードは私にとってはうまくいきました。

json_decode( html_entity_decode( stripslashes ($jsonString ) ) );

@Thisguyhastwothumbs に感謝

于 2018-03-07T11:54:14.607 に答える
32

JSON stringify を使用する場合は、まず json_decode の前に html_entity_decode を使用します。

$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);
于 2014-03-26T10:27:15.547 に答える
26

の内容を確認する必要があります$_POST["JSONfullInfoArray"]。何かが解析されない場合は、 がjson_decode返されnullます。これはあまり役に立たないので、nullが返されたらjson_last_error()、問題の詳細を確認する必要があります。

于 2013-04-13T10:42:51.913 に答える
8
stripslashes(htmlspecialchars(JSON_DATA))
于 2014-09-24T07:12:51.597 に答える
2
jsonText = $_REQUEST['myJSON'];

$decodedText = html_entity_decode($jsonText);

$myArray = json_decode($decodedText, true);`
于 2018-01-22T10:30:40.910 に答える