定义要使用ajax发布的可变数量的变量

时间:2015-11-16 23:31:53

标签: javascript jquery ajax dynamic

我有许多动态定义的标记输入,我希望将相同数量的变量作为标记发布到以下ajax: 只会定义部分或全部$('#tag_x').val()

  $.ajax({
    url:'/ajax/defineTags/',
    type:'post',
    data:{
      tag_1:$('#tag_1').val(),
      tag_2:$('#tag_2').val(),
      tag_3:$('#tag_3').val(),
      tag_4:$('#tag_4').val(),
      tag_x:$('#tag_x').val(),
      tag_20:$('#tag_20').val()
    }
  }).always(function(response){
    console.log(response);
  });

我的问题是,我是否使用序列化?它不是标准形式。 如果是这样,请解释如何?我希望我已经说清楚了。

谢谢!

3 个答案:

答案 0 :(得分:0)

你可以使用

var data = $('input[id^="tag_"]').serialize();

DEMO

添加要序列化的数据

var data = $('input[id^="tag"]').serialize();
var Add_Data = data+'&id='+$('#tags-id').text();

DEMO

更复杂的

var data = $('input[id^="tag"]').serialize();
$('span[id^="tags"]').each(function(){
    var ThisText = $(this).text();
    var ThisId = $(this).attr('id');
    var add_Data = ThisId+'='+ThisText;
    data = data+'&'+ add_Data;
});
$('div').text(data); 

DEMO

并在ajax中使用

data: data

你应该知道的关于 .serialize()

的事情
  

.serialize()方法以标准URL编码方式创建文本字符串   符号。它可以作用于已选择个体的jQuery对象   表单控件,例如,,和:$(“输入,   textarea,选择“).serialize();

     

,输出应该是这样的

     

单=单&安培;多发性=多&安培;多发性= Multiple3&安培;检查= CHECK2&安培;无线电=收音机1

你应该知道的关于 .serializeArray()

的事情
  

.serializeArray()方法创建一个JavaScript对象数组,   准备编码为JSON字符串。它运行在jQuery上   表格和/或表格控件的集合。控件可以是   几种类型:

     

输出

     

[{       名称:“a”,       值:“1”},{       名称:“b”,       值:“2”},{       名称:“c”,       值:“3”},{       名称:“d”,       值:“4”},{       名称:“e”,       值:“5”}]

答案 1 :(得分:0)

您可以使用.serializeArray()

var data_arr = $('[id^=#tag_]').serializeArray();
$.ajax({
    url:'/ajax/defineTags/',
    type:'post',
    data:data_arr
  }).always(function(response){
    console.log(response);
  });

答案 2 :(得分:0)

一位朋友提出了这个建议并且它有效:

for (var prop in response) {
      if (prop.indexOf('tag_') >= 0) {    // is a tag_ property
        tagNum = prop.substring(4);
        //~ console.log(tagNum);
        hasValue = response[prop] !== '';
        if(response[prop] !== ''){
          //~ alert(tagNum+response[prop]);
          $('#tags-select').append('<option value="'+tagNum+'">'+response[prop]+'</option>');
        }
      }
    }

感谢帮助人员!