我有许多动态定义的标记输入,我希望将相同数量的变量作为标记发布到以下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);
});
我的问题是,我是否使用序列化?它不是标准形式。 如果是这样,请解释如何?我希望我已经说清楚了。
谢谢!
答案 0 :(得分:0)
你可以使用
var data = $('input[id^="tag_"]').serialize();
添加要序列化的数据
var data = $('input[id^="tag"]').serialize();
var Add_Data = data+'&id='+$('#tags-id').text();
更复杂的
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);
并在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>');
}
}
}
感谢帮助人员!