フィールドと任意の文字を入力できるテキスト領域を含むフォームがあります。フォームは何度もリサイクルされているため、フォームを送信することはできません。フォームの値は連想配列に格納されています。
<form name='Theform'>
<input type="text" id="VISITOR_DETAILS_NAME" value="Joe">
<input type="text" id="VISITOR_DETAILS_SIZE" value="Large">
<textarea id='VISITOR_DETAILS_INFO'>
User can enter anything here including double " and single ' quotes
</textarea>
<input type="hidden" name="package" id="package" value="" />
</form>
テキスト領域の値は、他のフォーム値とともに JavaScript 配列に格納されます。
myArray[0]['VISITOR_DETAILS_NAME'] = document.getElementById('VISITOR_DETAILS_NAME').value;
myArray[0]['VISITOR_DETAILS_SIZE'] = document.getElementById('VISITOR_DETAILS_SIZE').value;
myArray[0]['VISITOR_DETAILS_INFO'] = document.getElementById('VISITOR_DETAILS_INFO').value;
私は次のような配列になります:
{
VISITOR_DETAILS_NAME : "Joe",
VISITOR_DETAILS_SIZE : "Large",
VISITOR_DETAILS_INFO : "User can enter anything here including double " and single ' quotes"
};
次に、 JSON.stringifyを使用してこの JavaScript 配列を非表示のフォーム フィールドに渡し、これを PHP に POST します。
document.getElementById('package').value = JSON.stringify(myArray[0]);
Theform.submit();
(今のところ、JSON が POST を介して JavaScript 配列を正しく渡していることをテストするために、iframe に投稿しているだけです)。
PHP側でそれを取得すると、うまくいくようです。JSON.stringifyが二重引用符(\" )にバックスラッシュを追加したように見えます- そして今、MySQL に値を保存したいと思います。配列 - だから私はこれを試します:
parent.myArray[0] = JSON.parse('<?php echo $_POST['package']; ?>');
エラーが発生します: SyntaxError: Expected token ')' OR SyntaxError: missing ) after argument list
これは私には奇妙です-投稿せずに試してみると、次のようにうまくいくようです:
document.getElementById('package').value = JSON.stringify(myArray[0]);
今、文字列化された値を配列に戻そうとすると
myArray[0] = JSON.parse(document.getElementById('package').value);
- 正常に動作しているようです - エラーはありません
質問:
- POSTED JSON.stringify()値から ARRAY を再構築しようとすると、このエラーが発生するのはなぜですか?
- この JSON.stringify() 値をそのまま MySQL に保存しますか?
- または、最初に PHP json_decode()を実行しますか?
フォーム データを取得し、適切に処理して、MySQL に保存し、必要なときにフォームに読み込みます。
皆さんありがとう :)