防止php $ _REQUEST转换json

时间:2013-01-08 20:08:18

标签: php jquery ajax json request

是否有人知道如何让PHP $ _REQUEST自动转换JSON?我正在通过POST发送数据,并希望将其中的一些保留为原始形式,并将其存储为字符串。

理想情况下,我想要一些简单的方法来“逃避”一段字符串。似乎有一种简单的方法可以做到这一点,但我还没有看到过。


哇...请原谅我在措辞这个问题上缺乏准确性,我已经连续几天不停地编程而且累了。在我甚至无法解释误解之前,我没想到会急于解决我的问题。

我的意思是我将javascript对象作为数据传递给jQuery的$ .ajax()方法,并使用类型:“POST”进行调用。后来我意识到$ .param()在内部用于将对象序列化为传输的查询字符串,并且$ _REQUEST []将传递给这种方式的对象转换为数组结构,就像使用任何复杂的表单数据一样。


客户代码

$.ajax({ type: "POST", url: "some.php", data: {"obj":{"key":"val"},"str":"text"} })

2 个答案:

答案 0 :(得分:5)

当您执行jQuery AJAX请求时,数据中的键/值对将作为POST参数发送,而不是作为JSON发送。如果您希望将数据发布为JSON,那么您需要做的是类似于以下内容:

<script type="text/javascript" src="https://raw.github.com/gist/754454/c6401b8cc461f84799503484a0c780a7622b164d/jQuery.stringify.js"><!-- JSON library --></script>

<script type="text/javascript">
  var data = JSON.stringify({"obj":{"key":"val"},"str":"text"}});
  $.ajax({'type':"POST", 'url':"some.php", 'data':{'data':data});
</script>

请注意,我们将您通常传递的内容作为“data”参数,但我们正在创建一个名为“data”的post参数,其值为数据结构的字符串化版本。也称为JSON。

答案 1 :(得分:1)

在这种特殊情况下,我希望能够做到以下几点:

$.ajax({
    type: "POST", 
    url: "some.php", 
    data: {
        "obj": {
            "key": "val",
            "keepStr": JSON.stringify({
                "innerObj" {
                    "item1": "val",
                    "item2": "val2"
                }
            })
        },
        "str": "text"
    } 
});

并将“innerObj”作为JSON字符串直接存储到db。如上所述,我认为$ .ajax()会将数据转换为JSON进行传输。正如另一个答案所澄清的那样,情况并非如此,而是在内部使用$ .param()进行转换。

感谢您的回复,以及重新开启问题。