用jQuery发送JSON数据为什么下面的代码发送数据为City=Moscow&Age=25而不是JSON格式?var arr = {City:'Moscow', Age:25};$.ajax(
{
url: "Ajax.ashx",
type: "POST",
data: arr,
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
});
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
因为您没有指定请求内容类型,也没有更正JSON请求。下面是发送JSON请求的正确方法:
var arr = { City: 'Moscow', Age: 25 };$.ajax({
url: 'Ajax.ashx',
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}});要注意的事情:
- 使用
方法将javascript对象转换为JSON字符串,JSON字符串是本机并内置到现代浏览器中的。如果您想支持旧的浏览器,您可能需要包括JSON.stringifyjson2.js
- 控件指定请求内容类型。
属性,以便向服务器指示发送JSON请求的意图。contentType - 这个
属性用于您希望从服务器获得的响应类型。jQuery足够聪明dataType: 'json'猜
它来自服务器
响应头。因此,如果您有一个Web服务器,它或多或少地尊重HTTP协议,并使用Content-Type
对于您的请求,jQuery将自动将响应解析为javascript对象到Content-Type: application/json
回调,这样您就不需要指定success
财产。dataType
要小心的事情:
- 你所说的
是arr不是数组
..它是一个具有属性的javascript对象(
和City
)。数组用Age
在javascript里。例如[]
是一个由两个对象组成的数组。[{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }]
森栏
TA贡献1810条经验 获得超5个赞
因为默认情况下jQuery序列化作为data参数$.ajax..它用$.param若要将数据转换为查询字符串,请执行以下操作。
的jQuery文档$.ajax:
[
data参数]被转换为查询字符串,如果不是已经转换为字符串的话。
如果要发送JSON,则必须自己编码:
data: JSON.stringify(arr);
请注意JSON.stringify只存在于现代浏览器中。
牛魔王的故事
TA贡献1830条经验 获得超3个赞
$.postJSON = function(url, data, success, args) {
args = $.extend({
url: url,
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
success: success }, args);
return $.ajax(args);};$.postJSON('test/url', data, function(result) {
console.log('result', result);});- 3 回答
- 0 关注
- 550 浏览
添加回答
举报
0/150
提交
取消
