2012-04-20 18 views
0

可能性の重複:
Using jQuery to compare two arraysjQueryのチェックフォームデータが等しい場合

私はすべて30秒たとえば上のサーバにAJAXを経由してフォームデータを送信する必要が

が、今私はそれになりたいですクライアント側でチェックされ、フォームに変更があった場合にのみAjaxがヒットしました。 私は

var lastData = ""; 
function saveFormInDB(){ 
    var $form = $("#fb_divBl0ck1").closest('form'); 
    var isSame = false; 
    data = $form.serializeArray(); 
    if(lastData == ""){ 
     lastData = data; 
    }else{ 
     if(lastData == data){ 
      isSame = true; 
     } 
     lastData = data; 
    } 
    if(!isSame){ 
     jqxhr = $.post("/SPSKMEForm/FormSaveServlet", data) 
     .success(function() { 
      if(jqxhr.responseText != ""){ 
       alert(jqxhr.responseText); 
       alert($("#fixedFooter")); 
       alert($("#fixedFooter").html()); 
       $("#fixedFooter").text(jqxhr.responseText).css("display", ""); 
       $("#fixedFooter").fadeOut("slow"); 
      } 
     }); 
    } 
} 

しかしisSameは、この上の任意のヘルプ常にfalseであることを来ている使用していますか? データながら、文字列オブジェクトであるとして、あなたの変数lastDataが考えられるためである

答えて

1

。したがって、あなたの小切手は常に失敗し、あなたはいつもisSame = falseになります。

EDIT:方法は、JSON文字列として符号化される準備ができオブジェクトのJavaScriptのアレイ、 を作成する()

.serializeArray。

+0

私はlastDataにデータを割り当てていると思います。オブジェクトでもありますので、varもすべてのものに使用できます(私は推測します)。 – Varun

+0

あなたのコードVarunをチェックするだけで、チェックが行われます。もし本当であれば、isSame = trueとなり、チェックの結果に関係なく常にlastDataをデータに割り当てますが、isSameは常にfalseになります。 –

+0

+1:.serializeArray()メソッドはJSON文字列としてエンコード可能なオブジェクトのJavaScript配列を作成します。 - http://api.jquery.com/serializeArray/ –

1

私は異なり、この問題にアプローチします:フォームの入力タグで

は、保存された(元)値含む属性を追加:あなたのjQueryで今

<input type="text" name="name" value="" original="Brian"> 

を、値が一致するかどうかを確認:

データを送信するたびに、必ず「元の」属性を更新してください。

+0

効率が上がりますか?単純にグローバルな 'data'変数にループを置き、その値をチェックする方がよいでしょう – Varun

関連する問題