ajax请求方式的问题!!!

新手上路,请多包涵

最近做需求遇到一个高级查询的插件,这个插件发布如下图的请求。后台是通过读取IO流的方式获取到请求的json数据。现在我要改这个插件的请求逻辑,结果自己模拟ajax请求,却实现不了这个插件自带请求的方式。导致后台解析不到数据。前提是:后台改动涉及逻辑复杂,无法更改后台解析方式。希望有高人指点一下!!!
插件请求抓包截图:
clipboard.png
自己写js请求抓包截图:

 $.ajax({
                url: url,
                type: 'POST',
                contentType: 'application/json; charset=utf-8', // 很重要
                traditional: true,
                data: {"name":"aaa","subs":[{"name":"bbb","age":"12"},{"name":"ccc","age":"20"}]}
            })
            .done(function() {
                console.log("success");
            })
            .fail(function() {
                console.log("error");
            })
            .always(function() {
                console.log("complete");
            });
            

clipboard.png

阅读 2k
2 个回答

是不是要转成JSON串

 $.ajax({
    url: url,
    type: 'POST',
    contentType: 'application/json; charset=utf-8', // 很重要
    traditional: true,
    data: JSON.stringify({"name":"aaa","subs":[{"name":"bbb","age":"12"},{"name":"ccc","age":"20"}]})  // 转JSON串
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

data
类型:String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

processData
类型:Boolean
默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

加上 processData: false 试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题