是否有人知道如何让PHP $ _REQUEST自动转换JSON?我正在通过POST发送数据,并希望将其中的一些保留为原始形式,并将其存储为字符串。
理想情况下,我想要一些简单的方法来“逃避”一段字符串。似乎有一种简单的方法可以做到这一点,但我还没有看到过。
我的意思是我将javascript对象作为数据传递给jQuery的$ .ajax()方法,并使用类型:“POST”进行调用。后来我意识到$ .param()在内部用于将对象序列化为传输的查询字符串,并且$ _REQUEST []将传递给这种方式的对象转换为数组结构,就像使用任何复杂的表单数据一样。
客户代码
$.ajax({ type: "POST", url: "some.php", data: {"obj":{"key":"val"},"str":"text"} })
答案 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()进行转换。
感谢您的回复,以及重新开启问题。