从隐藏的表单字段发布JSON

时间:2012-02-13 10:15:03

标签: php jquery forms post

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

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

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

echo $_POST['JSON'];

输出如下:

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

我试过通过 stripslashes() urldecode()来运行它,但我没有任何快乐。我知道我可以用替换函数替换反斜杠,但这有点太糟糕了。

之前是否有人在帖子中遇到过这个malfored JSON?

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

4 个答案:

答案 0 :(得分:2)

看起来你的服务器上有magic_qoutes_gpc'。 (http://www.php.net/manual/en/security.magicquotes.what.php)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你有另一种可能性是在你的json对象javascript中使用encodeURIComponent()进行url-encode,并在php中使用urldecode()来接收对象。

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