我有一个超链接图片,点击图片应调用名为$plan = new Plan();
$plan->setName('Billing Plan')
->setDescription('Billing Plan')
->setType('fixed');
的javascript函数,如下所示,
downloadReport()
此函数再次包含两个函数。
<a href="#" title="Export" target="self"><img onclick="downloadReport()" align="right" id="exportFile" src='<c:url value="resources/img/excel_download.jpg"/>'></a>
这个代码的问题是,第二个函数download()在上传之前被调用,如何等待完成上传功能然后调用下载功能?因为我是javascript的初学者,也没有关于Ajax或JQuery的大量信息。
答案 0 :(得分:0)
你可以通过ajax post ajax调用第一个方法upload(),然后在ajax成功响应的基础上,你可以调用第二个方法。
答案 1 :(得分:0)
看起来应该是这样的:
function downloadReport() {
upload().then(function() {
download().then(function() {
// do other stuff when all finished
});
});
}
function upload(){
return $.Deferred(function(def) {
from = getFrom();
to = getTo();
all = getAll();
approved = getApproved();
rejected = getRejected();
pending = getPending();
_("multiphase").method = "get";
_("multiphase").action = "/curation/export";
// _("multiphase").submit(); should have some sort of callback if it's async. Maybe it already returns a promise?!
_("multiphase").submit(function(){ def.resolve(); });
// the function(){ def.resolve(); } should represent the submit callback
});
}
function download() {
return $.Deferred(function(def) {
_("multiphase").method = "get";
_("multiphase").action = "/curation/download";
_("multiphase").submit(function() { def.resolve(); });
});
}
答案 2 :(得分:0)
如果第一个函数执行成功,那么你应该从第一个函数返回值并添加条件,然后另一个函数将起作用。类似下面的例子
@PreDestroy
public void clear() {
}