我有一个与使用POST下载文件相关的问题。
我有以下javascript向服务器端发送POST请求以下载文件:
function postCall(url, params) {
function doPostCall() {
var newForm = jQuery('<form>', {
'method':'POST',
'action': url
});
for(key in params) {
if (params.hasOwnProperty(key)) {
newForm.append(jQuery('<input>', {
'name': key,
'value': params[key],
'type': 'hidden'
}));
}
}
newForm.appendTo("body").submit();
}
从HTML页面的不可见iframe调用此方法。此页面还有另一个正常的GET请求来获取静态HTML。但是,每次调用上述方法时,获取静态页面的调用永远不会从服务器端返回。
我知道用这么少的信息来理解它有点难以理解,但代码很庞大,很难被放到这里。我的问题是:
答案 0 :(得分:0)
GET请求中的描述不是很清楚,不是从同一个iframe发送的。是的,然后在提交表单之后重新加载iframe内容 - 因为它不是AJAX请求 - 停止在iframe中运行的所有其他javascript代码。
好吧,您可以在表单中添加'target =“_ blank”'属性 - 在这种情况下,iframe内容不会在表单提交时重新加载。
是的,很有可能。 jQuery.ajax方法返回Deferred对象。因此,您可以将这些延迟对象存储在数组变量中,并等待所有延迟已解决。然后运行POST提交。 jquery.whenAll插件可以简化此任务:
jQuery.whenAll(
$.get( URL1 ),
$.get( URL2 )
)
.always(function(results) { postCall(url, params) });