我有一个带有字段的表单和一个允许输入任何字符的文本区域。我不能只提交表单,因为表单被多次回收,所以表单值存储在关联数组中:
<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:
document.getElementById('package').value = JSON.stringify(myArray[0]);
Theform.submit();
(现在我只是发布到 iframe 以测试 JSON 是否通过 POST 正确传递 JavaScript 数组)。
当我在 PHP 方面得到它时 - 似乎很好。看起来JSON.stringify已将反斜杠添加到双引号(\" ) - 现在我想将值存储在 MySQL 中。但我想首先测试我可以将 JSON 发送/重建回 javascript 作为一个数组 - 所以我试试这个:
parent.myArray[0] = JSON.parse('<?php echo $_POST['package']; ?>');
我在参数列表后收到 ERROR: SyntaxError: Expected token ')' OR SyntaxError: missing )
这对我来说很奇怪 - 因为当我在没有 POSTING 的情况下尝试它时 - 它似乎像这样工作正常:
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 中,然后在需要时将其读回表单中。
谢谢大家:)