Ajax复选框选择(旧代码,与jQ v1.3一起使用)

时间:2012-03-19 16:06:53

标签: jquery ajax

此代码适用于我的一个开发框(使用JQ v1.3.2。)我刚刚更新到最新的JQ版本,它不再有效。我注意到在查看Chrome提交的表单数据时,我正在传递“MessageID []”,这解释了为什么我的函数抱怨缺少messageID。有人能让我摆脱痛苦并告诉我如何解决这个问题吗? (对不起,对不起......我知道这是应该知道的。)

一如既往。

<input type="checkbox" name="message"  value="#messageID#" />


$('.move').click(function(e){                         
var folderID = $(this).attr('data-id');                                
var selected = new Array();
$("input:checkbox[name=message]:checked").each(function() {
 selected.push($(this).val());
});
$.post(
<cfoutput>"My.cfc?method=moveMessage&ID=123&time=#now()#", </cfoutput>
{folderID: folderID, messageID: selected },
function() {
loadMessages();
});  
  return false; 
  alert('Please select at least one message.')
});

1 个答案:

答案 0 :(得分:0)

认为你想要“传统”形式的参数序列化(不包括[])。要获得此选项,您必须将$.post转换为$.ajax来电:

$.ajax({
    type: "POST",
    data: { folderID: folderID, messageID: selected },
    url: <cfoutput>"My.cfc?method=moveMessage&ID=123&time=#now()#", </cfoutput>
    success: function () {
        loadMessages();
    },
    traditional: true // <-- use "traditional" param serialization
});

您还可以按照serialize的文档中的指定全局设置此属性:

  

从jQuery 1.4开始,$ .param()方法序列化深层对象   递归地适应现代脚本语言和框架   例如PHP和Ruby on Rails。您可以禁用此功能   全局设置jQuery.ajaxSettings.traditional = true;