2015-10-20 84 views
0

我寫了下面的調用export.php文件的ajax代碼,但由於我無法啓動要下載的文件,我用jQuery fileDownload很好地工作,並彈出我的文件下載。但是,我的原始ajax代碼能夠將所有表單數據發佈到export.php文件。新的fileDownload ajax代碼似乎沒有將任何數據發佈到export.php。jQuery Ajax fileDownload not posting data

任何人都可以建議嗎?我試圖改變$(本).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代碼:

$.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

你爲什麼不試試用$('#loginForm')而不是這個。 –

+0

對不起忘記提及我試過了,但它仍然不起作用 – Ahmed

回答

1

我想出了爲什麼$ .fileDownload方法沒有發佈數據。我嘗試將$(this).serialize更改爲$('#loginForm'),儘管這與$ .ajax一起工作,但它沒有與$ .fileDownload一起工作,所以我將它更改爲$(form).serialize,現在它可以工作。

+0

不幸的是,這個插件與FormData不兼容。 –

0

有很少的必需的東西,你會得到回發文件。

確保形式標籤包含enctype="multipart/form-data"

像:

<form id="frm1" method="POST" action="export.php" enctype="multipart/form-data"> 
    .... //your input fields and input file. 
</form> 

阿賈克斯應該是這樣的:

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

我希望這會幫助你。它只是一個演示,您可以根據您的要求進行設置。

+0

這種方式的問題是,它類似於我已經在第一個例子中工作的ajax方式,但我需要讓它與$ .fileDownload方法一起工作$ .ajax方法。 – Ahmed

+0

請考慮我的JS代碼的第一行。 'var formData = new FormData($(「#frm1」)[0]);' – Mehmood

+0

使用這一行,我希望能夠發佈文件。 – Mehmood