javascript - 使用 jQuery 发送 JSON 数据

标签 javascript jquery ajax

为什么下面的代码以 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);
        }
    }
);

最佳答案

因为您既没有指定请求内容类型,也没有指定正确的 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 字符串。如果您想支持旧版浏览器,您可能需要包含 json2.js
  • 使用 contentType 属性指定请求内容类型,以便向服务器指示发送 JSON 请求的意图
  • dataType: 'json' 属性用于您希望从服务器获得的响应类型。 jQuery 足够智能,可以从服务器 Content-Type 响应 header 中猜测它。因此,如果您有一个或多或少遵循 HTTP 协议(protocol)并以 Content-Type: application/json 响应您的请求的 Web 服务器,jQuery 将自动将响应解析为一个 javascript 对象并放入 success 回调,这样您就不需要指定 dataType 属性。

注意事项:

  • 你所说的 arr不是数组。它是一个具有属性(CityAge)的 javascript 对象。数组在 javascript 中用 [] 表示。例如 [{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }] 是一个包含 2 个对象的数组。

关于javascript - 使用 jQuery 发送 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587221/

相关文章:

javascript - 生成包含值及其兄弟值和父值的 HTML 表行

带有 jquery slidedown 的 PHP ajax

javascript - Angular.js 按精确值过滤(严格相等)

php - 检查是否启用了 cookie

javascript - 如何通过Web应用程序(ReactJS)检测Android设备虚拟键盘中的空格键

jquery - 垂直和水平选项中的可滚动 HTML 表格

javascript - 如何在 extjs 中使用 Ext.componentQuery.query 定位具有多个属性的元素

jquery - 将鼠标悬停在另一个 <div> 上时更改 <div> 内的图像 <src>

jquery - 从 iframe 内部加载 Jquery (Galleria) 脚本时出现问题

javascript - Jquery Ajax调用时如何获取数据值?