此代码适用于我的一个开发框(使用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.')
});
答案 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;
。