我有一个表单,我使用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。
谢谢!
答案 0 :(得分:0)
Javascript数组对象不支持名为each
的方法。你应该试试
$.each(score, function(index, value){...});