function GenerateZipPackage() {
var drpListSelected = $("#drpCourse").chosen().val(); --I am using a chosen multiselect library
$.each(drpListSelected, function(i, courseId) {
$('#CurrentCourseId').val(courseId);
$("#frmZipPackages").submit();
});
}
根据courseId,我正在生成要下载的zip课程包。 但是,当我运行此代码时,我只会为drpListSelected中的最后一个CourseId获得一个zip软件包。通过JS文档,我认为.each循环是一个同步调用,因此不会调用所有其他表单提交调用。我试图四处寻找,并找到了解决此问题的另一种方法,即将整个列表发送到服务器端代码并为每个课程返回一个包含多个zip文件的单个zip文件。但是单个文件的大小约为2mb,如果选择了很多courseId,我肯定会遇到内存异常。谁能在正确的方向帮助我?如果我可以按顺序队列提交表单,我想我将完成此操作而无需在服务器端进行任何更改(因为我们已经有了在表单提交时一次创建单个程序包的代码)
答案 0 :(得分:0)
示例以表单提交为例的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);
}
});
}