【问题标题】:Post an empty array using ajax in jquery在 jquery 中使用 ajax 发布一个空数组
【发布时间】:2014-04-28 06:49:50
【问题描述】:

我试图使用 ajax 调用发布一个空数组,但数据被发布为一个空字符串,即 Parts: 。我希望将数据作为 Parts:[] 发布,这不会发生,因为 web 服务仅处理空集合,即 Parts[]。

Code:
var parts=[];
$.ajax({
type: "POST",
url: "http://api-test.example.com",
dataType: "json",
headers:{Authorization:authHeader},
data: "Parts="+parts,
    success: function (result) {
    },
error: function (result){
}
});

知道如何解决这个问题吗?

【问题讨论】:

  • 很可能你应该在服务器端处理这个问题,你的网络服务的底层技术是什么?

标签: jquery ajax arrays


【解决方案1】:

尝试将数据作为数据传递:{}

$.ajax({
type: "POST",
url: "http://api-test.example.com",
dataType: "json",
headers:{Authorization:authHeader},
data: {Parts : parts} ,
    success: function (result) {
    },
error: function (result){
}
});

【讨论】:

  • 我也试过了,但还是不行,parts被认为是一个空字符串。
【解决方案2】:

将以下属性设置为您的调用,

 'traditional': true

还将您的 JSON 数据传递编辑为,

 data: JSON.stringify({ "parts" : parts } );

实际上,所有以前的版本都使用这种方式传递数组,但是随着新框架 ruby​​ on rails 和其他以不同方式处理数组,jQuery 开始了新的方法。

关于 SO 的更多帮助如下,

What is "traditional style of param serialization' in JQuery

【讨论】:

  • 将传统设置为 true 也给了我与空字符串相同的结果。
  • 你在服务器端使用 Parts 映射的变量名称是什么?
  • 尝试添加数据:JSON.stringify({ "parts" : parts });
  • 当parts 为空时,.net web 服务接受Parts:[];我正在尝试 json.stringify 但它作为空字符串传递 Parts: [] 并且parts被添加到服务端的列表中。任何帮助
【解决方案3】:

由于“传统:true”对我不起作用,我找到了另一个解决方案:将数组设置为 null。

let myArray = [];

// whatever code

if(myArray == [])
  myArray = null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2014-10-14
    相关资源
    最近更新 更多