【发布时间】: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