我有一个包含4个技能输入的表单,其中包含html:
<input type="text" id="skill1" name="skill[]" value="">
<input type="text" id="skill2" name="skill[]" value="">
<input type="text" id="skill3" name="skill[]" value="">
<input type="text" id="skill4" name="skill[]" value="">
我需要在控制器中得到这个:
有没有办法让技能名称在没有序列化的情况下传递给服务器,因为我必须在我的search_param(一个对象)附加一个limit属性。基本上我想要search_param.data中的所有发布数据和search_param.limit
中的限制技能 - &gt;阵列(&#39; 0&#39; =&GT;&#39; PHP&#39;&#39; 1&#39; =&GT;的java&#39;&#39 2&#39; =&GT;& #39; html&#39;)(基本上作为控制器中的数组)
之前我以表单提交方式提交数据。现在我正在向Ajax做这个。我尝试使用serialize()通过Ajax将数据传输到服务器控制器。但问题是我正在使用一个接受限制作为参数的paginate函数(例如:param.limit,param是一个Object)。(请参阅下面的代码)我需要将两个数据和限制传递给ajax paginate函数。
我需要传递帖子数据和限制分页功能。
以下是代码:
function getUsers() {
var search_param = {'data':jQuery('#candidateForm').serialize()};
jQuery.ajax({
type: "POST",
dataType:'JSON',
url: jQuery('#site').val() + "search/ajax_search",
data: search_param,
cache: false,
success: function(data) {
if (data) {
//something
}else{
//else something
}
search_param.limit = 14; //this is desired way but as serialized it wont work
paginate_4a(jQuery('#site').val()+'search/ajax_search', 'srchResultCnt', search_param, {'fn':'fn_name', 'index':0});
}
});
}
尝试过,但失败了:
var skill = jQuery('input[name="skill[]"]').map(function(){return jQuery(this).val();});
var skill_hid = jQuery('input[name="skill_hid[]"]').map(function(){return jQuery(this).val();});
var experience = jQuery('input[name="experience[]"]').map(function(){return jQuery(this).val();});
var search_param = {
'skill':skill,
'skill_hid':skill_hid,
'experience':experience
};
抛出未捕获的TypeError:非法调用 任何帮助表示赞赏。
解决方案:
最后使用get(),现在在服务器端获取数组...感谢Nisam ....
$(&#39;输入[name =&#34; skill []&#34;]&#39;)。map(function(){return $(this).val();})。得到();
答案 0 :(得分:5)
数据参数应该是,
data: {searchaparams:search_param,page:1}
您可以将输入值作为数组,
获取var search_array = $('input[name="skill[]"]').map(function(){return $(this).val();}).get();
变量search_array
包含所有输入值。
您可以获取每个值search_array[0], search_array[1]
..等等
答案 1 :(得分:0)
试试这个:http://jsfiddle.net/borglinm/p8hY7/
迭代所有输入并构建数组
var inputs = [];
$("input").each(function(index, elem) {
inputs.push(elem.value);
});
var postData = {
'data': inputs,
'otherParam': 1
}
console.log(postData);