我正在使用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网站的后端。我不确定这是否会导致这种影响。
答案 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)
答案 3 :(得分:0)
你有另一种可能性是在你的json对象javascript中使用encodeURIComponent()
进行url-encode,并在php中使用urldecode()
来接收对象。
请注意,js中的encodeURIComponent()与php中的urlencode()并不完全相同,类似,decodeURIComponent()与urldecode()不同,但在大多数情况下,js中的编码和php中的解码反之亦然。