问题描述
我有一个包含4个技能输入的表格,它们具有类似html的
I have a form with 4 skill inputs having html like:
<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="">
我需要在控制器中获取它,例如:
I need to get this in controller like:
有什么方法可以将技能名称传递给服务器而无需序列化,因为我必须在我的search_param对象中添加一个limit属性.基本上,我希望所有发布数据都在search_param.data中,而我的限制则在search_param.limit
Is there any way to get skill names passed to server without serialize as i have to append a limit attribute to my search_param which is an object. Basically i want all post data in search_param.data and my limit in search_param.limit
技能->数组('0'=>'php','1'=> java','2'=>'html')(基本上作为控制器中的数组)
skill -> array('0'=>'php','1'=>java','2'=>'html') (basically as array in controller)
以前,我以提交表单的形式提交数据.现在,我正在向Ajax进行此操作.我尝试使用serialize()通过Ajax将数据传输到服务器控制器.但是问题是我正在使用接受极限作为参数的分页函数(例如:param.limit,param是一个对象).(请在代码下方输入pls chk)我需要将数据和限制都传递给ajax分页函数.
Previously i submitted data as form submit. Now i am making this to Ajax. I tried serialize() to transfer data to server controller via Ajax. But issue is that i am using a paginate function which accept limit as parameter(ex: param.limit, param is an Object).(pls chk below code) I need to pass both data and limit to ajax paginate function.
我需要将发布数据和限制都传递给分页功能.
I need to pass both post data and limit to paginate function.
下面是代码:
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:非法调用感谢您的帮助.
Throwing Uncaught TypeError: Illegal invocationAny help is appreciated.
解决方案:
最后使用get(),现在在服务器端获取数组...感谢Nisam....
use get() at last and now getting array in server side...thanks to Nisam....
$('input [name ="skill []"]').map(function(){return $(this).val();}).get();
$('input[name="skill[]"]').map(function(){return $(this).val();}).get();
推荐答案
数据参数应为
data: {searchaparams:search_param,page:1}
您可以像数组一样获取输入值,
You can get the input values as array like,
var search_array = $('input[name="skill[]"]').map(function(){return $(this).val();}).get();
变量search_array
包含所有输入值.您可以获取每个值search_array[0], search_array[1]
..等等
The variable search_array
contains all the input values.You can get each values search_array[0], search_array[1]
.. etc
这篇关于如何通过Ajax POST传递多个具有相同名称的输入数组元素值,例如ex:sikll []的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!