4

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

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


哇...请原谅我在表达这个问题时缺乏精确性,我已经连续几天不停地编程,只是累了。在我解释误解之前,我没想到会急于结束我的问题。

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


客户代码

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

2 回答 2

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>

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

于 2013-01-09T14:49:42.553 回答
1

在这种特定情况下,我希望能够执行以下操作:

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

并将“innerObj”作为 JSON 字符串直接存储到数据库中。如前所述,我的(错误的)印象是 $.ajax() 将数据转换为 JSON 进行传输。正如另一个答案所阐明的那样,情况并非如此,而是在内部使用 $.param() 进行转换。

感谢您的回复,并重新提出问题。

于 2013-01-09T15:30:22.330 回答