Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryajax调用删除空数组_Jquery_Ajax_Api - Fatal编程技术网

jqueryajax调用删除空数组

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",

我正在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",
        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。