我编写了以下调用export.php文件的ajax代码,但由于我无法启动文件下载,我使用了jQuery fileDownload,它运行良好并弹出我的文件下载。但是,我原来的ajax代码能够将我的所有表单数据发布到export.php文件中。新的fileDownload ajax代码似乎没有将任何数据发布到export.php。
任何人都可以提供建议吗?我尝试将$(this).serialize()更改为$('#loginForm')。serialize()但仍然没有运气
原始Ajax代码:
$.ajax(
{
type: 'POST',
url: 'export.php',
cache:false,
dataType: 'text',
contentType: 'application/x-www-form-urlencoded',
data: $('#loginForm').serialize(),
success:
function (data) {
var responseCode = parseInt(data);
}
});
fileDownload ajax code:
$.fileDownload('export.php?'+ Math.random(), {
httpMethod: 'POST',
data: $(this).serialize(),
successCallback: function (url) {
$(pleaseWait).remove();
},
failCallback: function (responseHtml, url) {
$preparingFileModal.dialog('close');
$("#error-modal").dialog({ modal: true });
}
});
答案 0 :(得分:1)
我已经弄清楚为什么$ .fileDownload方法没有发布数据。我尝试将$(this).serialize更改为$('#loginForm')虽然这与$ .ajax一起工作但它没有使用$ .fileDownload,所以我把它更改为$(form).serialize它现在有效。< / p>
答案 1 :(得分:0)
所需的东西很少,你会在Postback上获得文件。
确保表单标记包含enctype="multipart/form-data"
<强>像:强>
<form id="frm1" method="POST" action="export.php" enctype="multipart/form-data">
.... //your input fields and input file.
</form>
Ajax 应该像:
var formData = new FormData($("#frm1")[0]);
$.ajax({
type: 'POST',
url: actionURL,
data:formData, //$(this).serialize(),
cache: false,
processData: false,
contentType: false,
success: function (data) {
},
error: function (err) {
return false;
}
})
我希望这会对你有所帮助。它只是一个演示,你可以根据你的要求设置它。