为了账号安全,请及时绑定邮箱和手机立即绑定

用jQuery发送JSON数据

用jQuery发送JSON数据

HUH函数 2019-07-25 14:14:48
用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贡献1811条经验 获得超5个赞

因为您没有指定请求内容类型,也没有更正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);
    }});

要注意的事情:

  • 使用

    JSON.stringify

    方法将javascript对象转换为JSON字符串,JSON字符串是本机并内置到现代浏览器中的。如果您想支持旧的浏览器,您可能需要包括

    json2.js

  • 控件指定请求内容类型。

    contentType

    属性,以便向服务器指示发送JSON请求的意图。
  • 这个

    dataType: 'json'

    属性用于您希望从服务器获得的响应类型。jQuery足够聪明

    它来自服务器

    Content-Type

    响应头。因此,如果您有一个Web服务器,它或多或少地尊重HTTP协议,并使用

    Content-Type: application/json

    对于您的请求,jQuery将自动将响应解析为javascript对象到

    success

    回调,这样您就不需要指定

    dataType

    财产。

要小心的事情:

  • 你所说的

    arr

    不是数组

    ..它是一个具有属性的javascript对象(

    City

    Age

    )。数组用

    []

    在javascript里。例如

    [{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }]

    是一个由两个对象组成的数组。



查看完整回答
反对 回复 2019-07-26
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

因为默认情况下jQuery序列化作为data参数$.ajax..它用$.param若要将数据转换为查询字符串,请执行以下操作。

的jQuery文档$.ajax:

[data参数]被转换为查询字符串,如果不是已经转换为字符串的话。

如果要发送JSON,则必须自己编码:

data: JSON.stringify(arr);

请注意JSON.stringify只存在于现代浏览器中。对于遗留支持,请查看json2.js



查看完整回答
反对 回复 2019-07-26
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我为发布JSON编写了一个简短的方便函数。

$.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);});




查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 264 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信