jqueryajax调用删除空数组
我正在jQuery中编写一个AJAX调用,该调用调用以下两个函数:jqueryajax调用删除空数组,jquery,ajax,api,Jquery,Ajax,Api,我正在jQuery中编写一个AJAX调用,该调用调用以下两个函数: _remove: function(){ if (confirm('Are you certain you wish to permanantly remove item from this device?')){ var response = $conn.ajax({ url: "api_url", async: true, method: "POST",
_remove: function(){
if (confirm('Are you certain you wish to permanantly remove item from this device?')){
var response = $conn.ajax({
url: "api_url",
async: true,
method: "POST",
data: this._getPayload(),
processData: false,
contentType: false,
})
.then(response => {
return response;
});
}
}
_getPayload: function(){
var formData = new FormData();
formData.append('i_host[id]', refId);
formData.append("i_host[ipv4addrs][][del][]", "xx.x.xxx.xxx");
return formData;
}
});
我可以通过一组成功的参数在邮递员中拨打电话:
i_host[id] = refId
i_host[ipv4addrs][][del][] = xx.x.xxx.xxx
此外,参数的JSON对象如下所示:
"parameters": {
"i_host": {
"id": "refId",
"ipv4addrs": [
{
"del": [
"xx.x.xxx.xxx"
]
}
]
}
}
但是,当我调用jQuery来更新API时,问题似乎出现了,我的日志似乎接受了正确的参数集,然后给出了错误的参数集(看起来ipv4addrs被接受为对象数组,然后作为单个对象出错)。似乎正在从调用中删除第一个空数组
有两个功能的任何帮助都会很好。或者,关于如何进行ajax调用的任何输入都会非常有用。日志如下:
[DEBU|# 28|2018-08-08 14:56:44] : {"target"=>"update", "object"=>"i_hosts", "controller"=>"api", "i_host"=>{"id"=>"refId", "ipv4addrs"=>[{"del"=>["xx.x.xxx.xxx"]}]}, "action"=>"autoproxy"}
[DEBU|# 28|2018-08-08 14:56:44] : /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
[DEBU|# 28|2018-08-08 14:56:44] : {"i_host"=>{"id"=>"refId", "ipv4addrs"=> [{"del"=>["xx.x.xxx.xxx"]}]}}
[DEBU|# 28|2018-08-08 14:56:44] : =========================================================================================
[DEBU|# 28|2018-08-08 14:56:45] : =========================================================================================
[DEBU|# 28|2018-08-08 14:56:45] : {"response":{"status":false,"message":"Please check the errors array for detailed information on why your request failed to complete!","errors":[{"messages":["The passed value does not meet the mininum required standards"],"parameters":{}}],"data":{},"parameters":{"i_host":{"id":"refId","ipv4addrs":{"del":["xx.x.xxx.xxx"]}}}}}
[DEBU|# 28|2018-08-08 14:56:45] : =========================================================================================
Ajax不支持空数组:(我不明白。你正在发送
del
,但第一条日志消息是add
。这是从哪里来的?对不起,我有一个add和del。我以为我把它们都改成了del。我在测试add时复制了日志。结果是,ajax不会发送空数组,所以我必须找出其他的办法。你正在发送一个FormData
对象(表示“多部分/表单数据”内容类型),而不是JSON(需要“应用程序/JSON”内容类型)。这可能是您遇到的问题。此外,这可能是服务器端代码的问题,您尚未显示。似乎正在从调用中删除第一个空数组。您显示的JSON对象中没有空数组,那么这指的是什么?您看到的问题是正在删除一个级别的嵌套。您的意思是空的[]
索引?尝试将其更改为[0]
。虽然这可能是真的,也可能不是真的,但通常最好参考一个声明相同的标准……对不起,@HereticMonkey。至少,在上发现了一个bug,我不确定他们是否成功修复了它,或者实际上,这是一个重复,他们说他们不会修复它,因为我无法表示一个空数组n一种x-www-form-urlencoded格式。如果您想表示这样的结构,请使用JSON。