使用jQuery将JSON数据发送到PHP

时间:2010-12-05 19:38:03

标签: php jquery ajax json

我正在尝试编写一个jQuery函数来将查询字符串发送到PHP脚本,但我似乎无法以正确的格式获取文本。我想发送此查询字符串(使用适当的URL编码):

data={"name":"Chris"}

其中'data'始终是JSON字符串。使用jQuery的.ajax函数,我尝试将我的数据变量设置为

data: { 'data': {"name":"chris"} },

但是PHP最终得到了:

data[name]=chris

将数据发送回服务器的正确方法是什么,以便正确保留JSON字符串,而不必手工制作字符串?

4 个答案:

答案 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_encodejson_decode

答案 3 :(得分:0)

这是错误的:

data: { 'data': {"name":"chris"} },

您将获得一个索引数组,其中包含名称和值为chris的键。

这是对的:

{ name : "chris" } 

如果你想在php:

 name = "chris"; 

然后你必须发送

 { name : "chris" } 

根据您是否获得GET,您可以获得:

$name = $_GET["name"]; 

echo $name; // chris