Javascript 如何使用jquery清除数组索引?

Javascript 如何使用jquery清除数组索引?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用数组存储数据,然后使用ajax提交。这是第一次提交,效果很好。但当随后提交时,它将提交null值以及传递给服务器的数据 我正在使用下面的方法清除数组,但我发现前面的数据刚刚设置为null。例如,我第一次传递值1,successful。对于第二次提交,我清除数组并存储新值,例如,我将值2推送到项目[],当提交时,它将提交null和2 var items=[]; items.push(data); 我怎样才能修好它?我需要在每次提交值时重置数组 代码: 如果要重置所有阵列直到其为空,可以执

我使用数组存储数据,然后使用ajax提交。这是第一次提交,效果很好。但当随后提交时,它将提交null值以及传递给服务器的数据

我正在使用下面的方法清除数组,但我发现前面的数据刚刚设置为null。例如,我第一次传递值1,successful。对于第二次提交,我清除数组并存储新值,例如,我将值2推送到项目[],当提交时,它将提交null和2

var items=[];

items.push(data);
我怎样才能修好它?我需要在每次提交值时重置数组

代码:


如果要重置所有阵列直到其为空,可以执行以下操作:

var items=[];
$("#selection").click(function(e) {
       $(":checkbox").each(function() {
            if(this.checked === false) {
                this.checked = true;
                items.push(this.id);
            }
        });
});

$('#grid').submit(function(e){
            e.preventDefault();
            var formdata = {
                data:items
            };
            $.ajax({
                type: "POST",
                url: "/add",
                data: formdata ,
                dataType:'html',
                success: function(data) {
                    alert("added");
                }
            });
        });
这样您就可以重置阵列

更新 使用时:

var array = [1,2,3,4,5,6];
array.length = 0;
希望对你有帮助


感谢您的注释@nnnnnn

如果您想重置所有阵列直到其为空,您可以执行以下操作:

var items=[];
$("#selection").click(function(e) {
       $(":checkbox").each(function() {
            if(this.checked === false) {
                this.checked = true;
                items.push(this.id);
            }
        });
});

$('#grid').submit(function(e){
            e.preventDefault();
            var formdata = {
                data:items
            };
            $.ajax({
                type: "POST",
                url: "/add",
                data: formdata ,
                dataType:'html',
                success: function(data) {
                    alert("added");
                }
            });
        });
这样您就可以重置阵列

更新 使用时:

var array = [1,2,3,4,5,6];
array.length = 0;
希望对你有帮助


感谢您的注释@nnnnnn

您只需在ajax之后将数组设置为空数组即可

array.splice(0) // this will delete items from index that you passed, only if you passed the first parameters
或者最好在每次点击时清空它

success: function(data) {
    alert("added");
    items=[];
}

只需在ajax之后将数组设置为空数组

array.splice(0) // this will delete items from index that you passed, only if you passed the first parameters
或者最好在每次点击时清空它

success: function(data) {
    alert("added");
    items=[];
}

添加所有relevatn代码将有助于查看guradio提到的相关代码,但什么阻止了您重新分配变量?
items.length=0
,或者只是重新分配一个新的空数组
items=[]
。(无论如何,这不是jQuery问题,这是一个简单的JavaScript问题。)我认为问题是由于分页造成的;(调用
items.push()的现有代码)
从单击处理程序内部看似乎有点奇怪-如果用户在提交之前多次单击该元素,是否意味着相同的值会多次添加到数组中?添加所有relevatn代码将有助于查看guradio提到的相关代码,但是什么阻止您重新分配变量?
items.length=0
或只是重新分配一个新的空数组
items=[]
(无论如何,这不是jQuery问题,这是一个普通的JavaScript问题)。我认为问题是由于分页造成的;(调用
items.push()的现有代码)
从单击处理程序内部看似乎有点奇怪-这是否意味着如果用户在提交之前多次单击该元素,相同的值会被多次添加到数组中?“这将克隆整个数组”-
.splice()
方法不会克隆,它会修改,并且
.splice(0)
确实清空了一个数组。@nnnnnn OMG你的右边我被用于克隆整个数组的array.slice(0)方法弄糊涂了,很抱歉,我将更新答案。谢谢。“这将克隆整个数组”-
.splice()
方法不克隆,它会修改,并且
.splice(0)
没有清空数组。@nnnnnn OMG您的权利我对array.slice(0)方法感到困惑,该方法将克隆整个数组,很抱歉我将更新答案谢谢。