使用jQuery ajax发起post请求无法提交数据是什么原因
问题原因分析
- 参数格式不符合默认序列化规则:默认情况下
$.ajax发送POST请求时,Content-Type为application/x-www-form-urlencoded,要求提交的数据为键值对结构,你直接传入纯数组myarray,jQuery无法正确完成序列化,最终导致数据未被携带到请求中。 - 未正确配置数据序列化规则:如果需要提交JSON格式的数组数据,需要手动指定
contentType: 'application/json; charset=utf-8',同时将数组转为JSON字符串传入data参数,否则浏览器会忽略无法序列化的原始数组数据。
修正方案
场景1:服务端接收表单格式的数组参数
将数组包裹为键值对结构即可,示例代码如下:
$('#btn').click(function () { var myarray = []; $("#DocumentList input[type=checkbox]:checked").each(function () { myarray.push($(this).attr('uniqueid')); }); $.ajax({ url: "替换为你的实际接口地址", type: "post", dataType: "text", // 将数组包装为键值对结构,参数名可根据服务端要求调整 data: { ids: myarray }, success: function (response) { }, error: function (jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); });
场景2:服务端接收JSON格式的请求体
如果接口要求接收JSON格式的数组参数,修改配置如下:
$('#btn').click(function () { var myarray = []; $("#DocumentList input[type=checkbox]:checked").each(function () { myarray.push($(this).attr('uniqueid')); }); $.ajax({ url: "替换为你的实际接口地址", type: "post", dataType: "text", // 指定请求体格式为JSON contentType: 'application/json; charset=utf-8', // 将数组转为JSON字符串传入 data: JSON.stringify(myarray), success: function (response) { }, error: function (jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); });
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

