在jQuery $ .submit中没有调用Javascript函数

时间:2011-03-11 02:08:38

标签: javascript jquery arrays sorting

嘿那里, 再一次,我一直在寻找一个解决方案来找出为什么一个函数,不会被调用...并且猜测是什么,我没有找到。

我有一个表单,我使用jQuery Ajax提交。当出错时,我得到了每一个本地数据,我得到了,我对它们进行了排序,并将它们显示给用户。

以下是示例代码:

$.ajax({
            type: "POST",
            url: "http://xxx/register.php",
            data: form,
            success: function(msg){
                //console.log("Data Saved: " + msg);
                $.iGrowl(2,stringdata[4]);

                var data = parseJSON(msg);

                if(data.msg.score != undefined){
                    var cpt = 0;
                    $.each(data.msg.score, function(index,el){
                        if(cpt<8){
                            if(el.selected)
                                $('tbody').append('<tr class="win"><td>' + el.name + '</td><td>' + el.score + '</td></tr>');
                            else
                                $('tbody').append('<tr><td>' + el.name + '</td><td>' + el.score + '</td></tr>');
                        }
                    });
                }
                else{
                            $.iGrowl(3,"Erreur inconnue...");
                }
                $("#scorediv").css("visibility","visible");

                $( "#formule" ).css('opacity',0);

        $( "#scorediv" ).css('opacity',1);

            },
            error: function(data) {             
                cpt = 0;
                var i = 0;
                score.each(function(r){
                    arrayScore[i] = r;
                    i++;
                });

                arrayScore.sort(function(a, b){
                    console.log("sorting...");
                    if(a[3])
                    {
                        if(b[3])
                        {           
                            return (b[3].value - a[3].value); //causes an array to be sorted numerically and descending
                        }
                    }
                });
                $.each(arrayScore, function(index,el){
                //arrayScore.forEach(function(el) {
                //score.each(function(el){ 
                    if(cpt<8)
                    {   
                        if(el[2].value == form[2].value)
                            $('tbody').append('<tr class="win"><td>' + el[1].value + '</td><td>' + el[3].value + '</td></tr>');
                        else
                            $('tbody').append('<tr><td>' + el[1].value + '</td><td>' + el[3].value + '</td></tr>');
                        cpt++;
                    }
                    else
                        return false;
                });


                var user = form;
                store.save(user, function(r) {
                });

                $.iGrowl(3,stringdata[5]);

                $("#scorediv").css("visibility","visible");
                $("#formule").css('opacity',0);
                $( "#scorediv" ).css('opacity',1);
            }
        });

我的数组永远不会排序。如果我改变这一部分:

var i = 0;
score.each(function(r){
     arrayScore[i] = r;
     i++;
});

由此:

score.each(function(r){
     arrayScore.push(r);
});

arrayScore永远不会被填充。

我尝试逐步执行控制台中的每一行,它有效....我有点疯狂......我真的不知道会发生什么?

任何帮助都会是优雅的欣赏!

P.S:我正在使用jQuery1.5 + Lawnchair和CSS3动画。 代码测试在safari和chrome。

谢谢!

1 个答案:

答案 0 :(得分:0)

Javascript数组对象不支持名为each的方法。你应该试试

$.each(score, function(index, value){...});