我需要将数据作为数组传递给JQuery中的fancybox实例。
传递的格式必须如下所示:Array( [remove] => Array ( [1] => 1 [109] => 109 [110] => 110 ))
现在我使用以下代码,但这不起作用,因为我没有传递数组。
提前致谢...
复选框看起来像这样,并在数据库结果中生成:
<td class="checkboxTable"><input name="remove[<?php echo $users->id; ?>]" type="checkbox" id="checkbox[]" value="<?php echo $users->id; ?>"/></td>
我使用的javascript是:
$('.deleteConfirmationMultiple').Loader({
url: ['/dgpcms/public/fancybox/jquery.fancybox-1.3.2.pack.js',
'/dgpcms/public/fancybox/jquery.easing-1.3.pack.js',
'/dgpcms/public/fancybox/jquery.mousewheel-3.0.4.pack.js',
'/dgpcms/public/fancybox/jquery.fancybox-1.3.2.css'],
////debug: [true],
cache: [true],
success: function(target){
$(this).fancybox({
'autoDimensions' : true,
'autoScale' : true,
'overlayOpacity' : '0.70',
'overlayColor' : '#000000',
'transitionIn' : 'none',
'transitionOut' : 'none',
'hideOnOverlayClick': false,
'hideOnContentClick': false,
'showCloseButton' : false,
'href' : $('#deleteConfirmation').attr('action'),
ajax : {
type : 'POST',
data : $('input:checkbox:checked')
}
});
}
});
有没有办法像PHP那样完全传递值(例如:Array ( [remove] => Array ( [1] => 1 [109] => 109 [110] => 110 ) [deleteMultiple] => Delete selected )
)?
编辑2011年1月12日
我有点进一步,但是有一个奇怪的问题......
我的ajax调用中未将ID作为数据发布。当我为checkall链接创建一个onclick函数(所有复选框都被选中)并调用getData函数并提醒结果时,我得到了复选框的id。但是在我的ajax调用中调用该函数会返回空...
以下是代码:
$('.deleteConfirmationMultiple').Loader({
url: ['/dgpcms/public/fancybox/jquery.fancybox-1.3.2.pack.js',
'/dgpcms/public/fancybox/jquery.easing-1.3.pack.js',
'/dgpcms/public/fancybox/jquery.mousewheel-3.0.4.pack.js',
'/dgpcms/public/fancybox/jquery.fancybox-1.3.2.css'],
////debug: [true],
cache: [true],
success: function(target){
// Array( [remove] => Array ( [1] => 1 [109] => 109 [110] => 110 ))
// var id = {5: '5', 6: '6', 7: '7'};
var id = '';
$.fn.getData = function(options){
var id = $('input:checkbox:checked').map(function(){
return this.value.serialize();
}).get();
//alert(id);
return id;
};
$(this).fancybox({
'autoDimensions' : true,
'autoScale' : true,
'overlayOpacity' : '0.70',
'overlayColor' : '#000000',
'transitionIn' : 'none',
'transitionOut' : 'none',
'hideOnOverlayClick': false,
'hideOnContentClick': false,
'showCloseButton' : false,
'href' : $('#deleteConfirmation').attr('action'),
ajax : {
type : 'POST',
data : {'remove':id}
}
});
}
});
编辑2010年1月12日
下面的代码,包含一个硬编码的数组,正如我想要的那样工作,现在我需要从选中的复选框中创建相同的东西....
var id = {5: '5', 6: '6', 7: '7'};
$(this).fancybox({
'autoDimensions' : true,
'autoScale' : true,
'overlayOpacity' : '0.70',
'overlayColor' : '#000000',
'transitionIn' : 'none',
'transitionOut' : 'none',
'hideOnOverlayClick': false,
'hideOnContentClick': false,
'showCloseButton' : false,
'href' : $('#deleteConfirmation').attr('action'),
ajax : {
type : 'POST',
data : {'remove':id}
}
});
答案 0 :(得分:6)
我不确定要传递的完全格式,但要获取数组而不仅仅是:
$('input:checkbox:checked')
...获取一组元素(jQuery对象),使用.map()
获取其值的数组,如下所示:
$('input:checkbox:checked').map(function() { return this.value; }).get();
答案 1 :(得分:2)
您可以使用.map()
:
var data = $('input:checkbox:checked').map(function(){
return this.value;
}).get();
这将提供格式为['109', '110']
的数组。
答案 2 :(得分:0)
通过再次查看所有内容,并使用fancybox登录示例,我想出了以下代码,它正是我想要的:
$('.deleteConfirmationMultiple').Loader({
url: ['/dgpcms/public/fancybox/jquery.fancybox-1.3.2.pack.js',
'/dgpcms/public/fancybox/jquery.easing-1.3.pack.js',
'/dgpcms/public/fancybox/jquery.mousewheel-3.0.4.pack.js',
'/dgpcms/public/fancybox/jquery.fancybox-1.3.2.css'],
//debug: [true],
cache: [true],
success: function(target){
$(this).click(function()
{
var id = $('input:checkbox:checked').map(function(){
return this.value;
}).get();
//alert(id);
$.ajax({
type : "POST",
url : $('#deleteConfirmation').attr('action'),
data : {'remove':id},
success: function(data) {
$.fancybox(data,
{
'autoDimensions' : true,
'autoScale' : true,
'overlayOpacity' : '0.70',
'overlayColor' : '#000000',
'transitionIn' : 'none',
'transitionOut' : 'none',
'hideOnOverlayClick': false,
'hideOnContentClick': false,
'showCloseButton' : false
});
}
});
return false;
});
}
});