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()与?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 回答