for循环中的JQuery Form Submit


function GenerateZipPackage() {
var drpListSelected = $("#drpCourse").chosen().val(); --I am using a chosen multiselect library 
$.each(drpListSelected, function(i, courseId) {
$('#CurrentCourseId').val(courseId);
$("#frmZipPackages").submit();
});
}

根据课程ID,我正在生成zip课程包以供下载。但当我运行这段代码时,我只得到drpListSelected中最后一个CourseId的一个zip包。通过JS文档,我认为.each循环是一个同步调用,因此不会调用所有其他表单提交调用。我试着四处寻找,找到了另一种解决方法,即将整个列表发送到服务器端代码,并为每个课程返回一个包含多个zip文件的单个zip文件。但单个文件的大小大约是2mb,我相信如果选择了很多课程ID,我会遇到内存异常。有人能帮我朝正确的方向走吗?如果我可以在顺序队列中提交表单,我想我将在不更改服务器端任何内容的情况下完成此操作(因为我们已经有了在表单提交时一次创建单个包的代码(

使用ajax调用代替表单提交的示例

function GenerateZipPackage() {
var drpListSelected = $("#drpCourse").chosen().val();  // we assume  drpListSelected = ['01', '23'];
var $currentCurseId = $('#CurrentCourseId'); //defined once, used multiple times
drpListSelected.forEach(function(courseId) {
$currentCurseId.val(courseId);
sendAjax(courseId);
});
}
function sendAjax(courseId) {
$.ajax('your url', {
type: 'POST',
data: {courseId:courseId},
dataType: 'json',
success: function(resp) {
console.log(resp);
},
error: function(req, status, err) {
console.error('something went wrong', status, err);
}
});
}

最新更新