jQuery $.submit 中未调用 Javascript 函数

发布于 2024-10-21 05:34:24 字数 3484 浏览 4 评论 0原文

嘿, 再次,我一直在寻找一个解决方案来找出为什么一个函数不会被调用......你猜怎么着,我没有找到。

我有一个使用 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 永远不会被填充。

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

任何帮助将不胜感激!

PS:我正在使用,jQuery1.5 + Lawnchair 和 CSS3 动画。 代码已在 safari 和 chrome 上测试。

谢谢 !

Hey there,
Again, I've been searching a solution to find out why a function, would not being called... and guess what, I did not find.

I have a form, that I submit using jQuery Ajax. When error, I get every local data, I got, I sorted them, and show them to the user.

Here is the sample code :

$.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);
            }
        });

My array is never sorted. If I change this part :

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

by this :

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

arrayScore is never filled.

I try to execute each line in the console step by step, it works.... I'm getting kind of crazy... and I really do not know what could have happened ?

Any help would be graceful appreciate !

P.S : I'm using, jQuery1.5 + Lawnchair and CSS3 animation.
Code tested on safari and chrome.

Thanks !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狂之美人 2024-10-28 05:34:24

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

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

Javascript array objects don't support a method called each. You should try

$.each(score, function(index, value){...});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文