【问题标题】:Posting JSON from hidden form field从隐藏的表单字段中发布 JSON
【发布时间】:2012-03-04 17:58:46
【问题描述】:

我正在使用 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 网站的后端。我不确定这是否会导致这种影响。

【问题讨论】:

  • 可以查看浏览器发送的post值吗?在 chrome 中,按 F12,打开网络选项卡并发布您的表单。单击请求并记下 Headers 选项卡 -> Form Data
  • 我试过了,效果很好 和 echo $_POST['json'];给出正确的输出
  • jQuery.submit() 是否有可能进行某种 url 编码?还是逃跑?

标签: php jquery forms post


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我可以看到这是如何工作的,但我不想在发布后再次使用 jQuery 进行解析。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        相关资源
        最近更新 更多