0

JQuery ajax関数を介して投稿しているフォームがあります。申請の流れは以下の通りです。

  1. ユーザーがフォームに入力して送信する
  2. フォームが投稿されると、データは一時配列に保存されます
  3. フォームが既に送信されている場合、新しい送信で変更されたデータのみを送信したい

比較したいフォームフィールド:

<input name="option[<?php echo $cmd1; ?>]" type="text">
<input name="option[<?php echo $cmd2; ?>]" type="text">
<input name="option[<?php echo $cmd3; ?>]" type="text">
<input name="option[<?php echo $cmd4; ?>]" type="text">

変更された入力の値のみを投稿したい。

以前のフォーム送信を現在のものと比較するコード (以前の送信は配列に保存されますtmpArray:

var fields = $('.option').serializeArray();
var n = 0;
jQuery.each( fields, function( i, field ) {
     if(field.value === tmpArray[n]){
         console.log(field.value+" : "+tmpArray[n]+ " TRUE");
     } else {
         console.log(field.value+" : "+tmpArray[n]+ " FALSE");
     }
    n++;
});

フォームを送信する ajax 関数:

jQuery.ajax({
    type:'POST',
    async: true,
    cache: false,
    url: '/Controller/'+action,
    success: function(response) {
        jQuery('#resultField').val(response);
    },
    data: jQuery('form').serialize()
});

('form').serialize()の値と一致する場合、each() ループの結果から値を削除する方法 (またはより良い方法) はありtmpArrayますか?

どんな提案でも大歓迎です!

4

2 に答える 2

0

次の投稿を確認してください。あなたの質問に対する回答が得られる可能性があります。

jQueryはシリアル化された配列からアイテムを削除します

于 2013-11-11T11:00:47.770 に答える
0

あなたは試すことができます、

var tempArray=[];


    var tempArrayString = JSON.stringify(tempArray);
    var values = $('.option').serializeArray();
    values = values.filter(function(field){
        return tempArrayString.indexOf(JSON.stringify(field))==-1;
    });    
    if(values.length>0){
        tempArray = values;//or something
    }

http://jsfiddle.net/33dh2/

于 2013-11-11T11:00:56.600 に答える