从隐藏的表单字段发布JSON


Posting JSON from hidden form field

我正在使用jQuery拦截一个表单帖子。使用表单字段,我正在创建一个JSON对象,该对象存储在一个隐藏的表单字段中。传入表单字段的值类似于以下内容:

{"Status" : "Closed", "Location" : "Glasgow", "Date" : "2012-02-15"}

但是,如果我从$_POST变量中回显对象:

echo $_POST['JSON'];

它的输出如下:

{'"Status'" : '"Closed'", '"Location'" : '"Glasgow'", '"Date'" : '"2012-02-15'"}

我试着通过stripslashes()urldecode()运行这个,但我没有任何乐趣。我知道我可以用替换函数来替换后面的斜杠,但这有点太麻烦了。

以前有人在帖子中遇到过这种错误的JSON吗?

注意:这是Wordpress网站的后端。我不确定这是否会造成这种影响。

看起来您的服务器启用了magic_qoutes_gpc。(http://www.php.net/manual/en/security.magicquotes.what.php)

我曾经遇到过同样的问题,我所做的只是使用JSON.stringify()将其作为"字符串"存储在我的隐藏字段中,并使用jquery.parseJSON()方法读取输出。也许这对你有帮助!使用stringify,您还可以为JSON对象定义一个替换器
var myJSONText = JSON.stringify(myObject, replacer);

  • http://www.json.org/js.html
  • http://api.jquery.com/jQuery.parseJSON/

虽然我的英语不好,但我看到它是php中json的问题,你可以使用json_decode do,可以转换成数组

另一种可能性是用javascript中的encodeURIComponent()对json对象进行url编码,用php中的urldecode()对接收的对象进行url编码。

请注意,js中的encodeURIComponent()与php中的urlencode()并不完全相同,类似地,decodeURIComponents()与urldecode()也不相同,但在大多数情况下,用js编码和用php解码,反之亦然。