JSON を cfc に投稿し、成功/失敗のメッセージを返すページがあります。JSON の作成元の配列には、更新された入力フィールドの ID が含まれています。要素の背景色を変更して、更新が行われたことをユーザーに警告していますが、ユーザーがページを離れずにさらに変更を投稿すると問題が発生します。配列には以前の投稿のデータがまだ含まれており、何をどこで配列をクリアしようとしても、背景の変更が機能しなくなります。
コードは次のとおりです。
$("input").change(function(){
theArray.push({
'id':$(this).attr('id'),
'value':$(this).val()
});
});
$("#edit_button").click(function(){
if(theArray.length >0){
theArray.push({
//some processing information to the cfc
});
theJson = JSON.stringify(theArray);
$.post("CFCs/fund_profile.cfc",
{
method:"updateProfile",
data:theJson
},
function(data){
if(data.HASERROR == 1){
$("#messageDiv").empty().html(data.MESSAGE);
}
else{
$("#messageDiv").empty().html(data.MESSAGE);
theArray.pop();//removing the cfc processing information
for(var i = 0; i <= theArray.length; i++){
var $el = $("#" = theArray[i].id).parent().parent().css('background','red');
setTimeout(function(){
$el.css('background','');
$("#messageDiv").empty();
},5000);
}
}
},
"json");
//THIS IS WHERE THE PROBLEM LIES (I THINK)
//I HAVE TRIED THE FOLLOWING:
var arrayLen = theArray.length;
for(var j = 0;j <= arrayLen; j++){
theArray.pop();
}//DOESN'T WORK
theArray.length = 0;
//DOESN'T WORK
for(var j = 0;j <= arrayLen; j++){
theArray.shift();
}//DOESN'T WORK
}
});
コードを削除して配列をクリアすると、背景が変更されますが、配列がその要素を失うことはなく、常にその要素が更新されていると表示されます。そのままにしておくと、背景の変化はまったく起こりません。
私が見逃しているのは単純なことだと確信していますが、私はそれについて不満を感じています.
何かご意見は?