jQuery Ajax文件下载不发布数据

时间:2015-10-20 15:17:23

标签: jquery ajax post

我编写了以下调用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 });
    }
});

2 个答案:

答案 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;
                }
            })

我希望这会对你有所帮助。它只是一个演示,你可以根据你的要求设置它。