我尝试使用$.post()
将数组发送到我的方法但是我有点失去了如何解决这个问题。
我正在获取表单之外的复选框的值,并将它们传递给我的方法。
我尝试使用.serializeArray()
& .serialize()
但是会收到错误
list.serializeArray不是函数
我只是发送数组我得到空值。
HTML
<form....><input type="submit" value="submit" id="click_post" /></form>
<div id="container">
<input type="checkbox" value="2,3" name="checkbox" />
<input type="checkbox" value="4,5" name="checkbox" />
<input type="checkbox" value="6,7" name="checkbox" />
</div>
JQUERY
$('#click_post').click(function () {
var list = new Array();
$('#container input[type="checkbox"]').each(function () {
list.push($(this).val());
});
var $form = $(this).closest('form');
$.post($form.attr('action'), { value: list }, function (data) {
alert('test');
});
});
方法
public ActionResult PassArray(string[] value){//doing some logic here}
答案 0 :(得分:0)
serialize
或serializeArray
应该应用于jQuery对象而不是简单数组,例如:
var serialized_data = $form.serialize();
传递给$.post
的数据应为:
数据随请求发送到服务器的地图或字符串。
所以你应该改变PassArray
方法参数。
var serialized_data = $('#container input:checkbox').serialize();
答案 1 :(得分:0)
<击> $('#click_post')。click(function(){ var $ form = $(this).closest('form'); $ .post($ form.attr('action'),$ form.serialize(),function(data){ 警报( '试验'); }); }); 击>
<击>并将操作参数的名称更改为checkbox
(因为这是您用作表单中复选框的名称):
public ActionResult PassArray(string[] checkbox) {
...
}
击> <击> 撞击>
更新:
或者如果您只想发送复选框的值而不是任何其他表单输入元素,则可能需要使用traditional
模式:
$('#click_post').click(function () {
var list = new Array();
$('#container input[type="checkbox"]').each(function () {
list.push($(this).val());
});
var $form = $(this).closest('form');
$.ajax({
url: $form.attr('action'),
type: 'POST',
traditional: true,
data: { value: list },
success: function(result) {
alert('test');
}
});
});
或:
$('#click_post').click(function () {
var list = new Array();
$('#container input[type="checkbox"]').each(function () {
list.push($(this).val());
});
var $form = $(this).closest('form');
$.post($form.attr('action'), $.param({ value: list }, true), function(result) {
alert('test');
});
});
然后:
public ActionResult PassArray(string[] value) {
...
}
答案 2 :(得分:0)
var list = new Array(); // This simply looks ugly
var list = []; //This is the best way to so it in js - both are the same though
//everything else seems fine.. now
var data = {value: JSON.stringify(list)}; // -> '[1,2,3]' and so on
你的其余代码很好。虽然我想知道,为什么在循环复选框并构建自己的数据时使用表单?表格中是否有这些复选框?即便如此,它是否仅为您保留帖子链接?