在ajax请求之前从帖子中删除数据

时间:2013-11-11 10:35:18

标签: javascript jquery ajax forms

我有一个表单,我通过JQuery ajax函数发布。 申请流程如下:

  1. 用户填写表单并提交
  2. 发布表单时,数据将保存在临时数组中
  3. 如果表单已提交,我只想发送新提交中已更改的数据
  4. 我要比较的表单字段:

    <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结果中删除值?

    任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:0)

请查看以下帖子,它可以回答您的问题。

jQuery remove item from serialized array

答案 1 :(得分: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/