【问题标题】:Javascript function not called in jQuery $.submitjQuery $.submit 中未调用 Javascript 函数
【发布时间】:2011-03-11 02:08:38
【问题描述】:

你好, 同样,我一直在寻找解决方案来找出为什么一个函数不会被调用......猜猜是什么,我没有找到。

我有一个表单,我使用 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 上测试的代码。

谢谢!

【问题讨论】:

    标签: javascript jquery arrays sorting


    【解决方案1】:

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

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

    【讨论】:

    • Score 是一个 Lawnchair 对象 :) 它支持 .each() 函数。如果我设置了一个时间间隔,允许我连续调用每个函数两次,那么它的工作原理是 0_°?
    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2023-03-07
    相关资源
    最近更新 更多