首页 > 解决方案 > jQuery:如何在 AJAX 帖子中发送 JSON 数据?

问题描述

我正在研究 AJAX。我创建了一个如下所示的发布请求:

   $.ajax({
    'url':'http://localhost/api/create/',
    'method':'POST',
    'dataType': 'json',
    'contentType': 'application/json',
    'data':{
        "refId":585,
        "phone":"0674444444"
     },
     'success': getHandlingStatus

  });

当我的请求被执行时,数据在我的请求负载中作为参数而不是 JSON 数据传递。这是我的请求有效负载:

refId=585&phone=0674444444

我想以 json 格式发送数据,例如:

{
"refId":"585",
"phone:"0674444444"
}

请问我错过了什么?

标签: jqueryajaxpostcontent-type

解决方案


您需要使用 JSON.stringify 将数据转换为 JSON,并将 ProcessData 选项设置为 false。根据 jquery 的文档:

默认情况下,作为对象(从技术上讲,除了字符串之外的任何内容)传入 data 选项的数据将被处理并转换为查询字符串,适合默认的内容类型“application/x-www-form-urlencoded” . 如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false。

$.ajax({
'url':'http://localhost/api/create/',
'method':'POST',
'dataType': 'json',
 processData: false,
'contentType': 'application/json',
'data':JSON.stringify({
    "refId":585,
    "phone":"0674444444"
 }),
 'success': getHandlingStatus

});

推荐阅读