我正在尝试编写一个jQuery函数来将查询字符串发送到PHP脚本,但我似乎无法以正确的格式获取文本。我想发送此查询字符串(使用适当的URL编码):
data={"name":"Chris"}
其中'data'始终是JSON字符串。使用jQuery的.ajax
函数,我尝试将我的数据变量设置为
data: { 'data': {"name":"chris"} },
但是PHP最终得到了:
data[name]=chris
将数据发送回服务器的正确方法是什么,以便正确保留JSON字符串,而不必手工制作字符串?
答案 0 :(得分:2)
首先,您需要使用json2.js,因为jQuery不包含输出JSON的功能,只能解析它,IE 6/7不支持我们将使用的方法。将您的JavaScript对象转换为JSON:
var encoded = JSON.stringify(data);
然后,您需要将JSON格式的字符串包含为请求数据:
$.getJSON(url, {data: encoded}, function() { ... });
编辑:这篇文章的旧版本引用了jquery-json插件,但很明显,当jQuery 1.3.x是最新的时,该插件是写的。
答案 1 :(得分:1)
您所要做的就是在字符串
周围加上引号data: { 'data': '{"name":"chris"}' }
答案 2 :(得分:0)
虽然从你的问题中不清楚,如果你想知道如何在PHP中正确处理JSON字符串,最好的方法是使用函数json_encode
和json_decode
。
答案 3 :(得分:0)
这是错误的:
data: { 'data': {"name":"chris"} },
您将获得一个索引数组,其中包含名称和值为chris的键。
这是对的:
{ name : "chris" }
如果你想在php:
name = "chris";
然后你必须发送
{ name : "chris" }
根据您是否获得GET,您可以获得:
$name = $_GET["name"];
echo $name; // chris