2017-05-31 107 views
0

我想將一個PDF文檔和一些使用AJAX方法(jQuery)的字符串化JSON數據一起發佈到ASP.NET WEB API(2)。這裏是我的方法不工作:AJAX發佈PDF文檔和JSON數據

JAVASCRIPT:

​​

的ASP.NET Web API:

[HttpPost] 
    [Route("submit")] 
    public string SubmitTemplate(SubmitTemplate template) 
    { 
     return "a thing happened"; 

    } 

SubmitTemplate型號:

public class SubmitTemplate 
    { 
     public string json { get; set; } 
     public string pdf { get; set; } 
    } 

郵遞員使用這種方法的作品(見截圖)使用上面沒有的AJAX方法。 如果此信息有幫助,它適用於移動應用程序(跨域)。

所有的幫助都很讚賞! 在此先感謝。

(這是一個像郵差是如何配置:screenshot hosted on imgur

編輯:pdfData是jsPDF(doc.output)做了一個PDF文件,所以我認爲這是字符串,如果你使用打開PDF文檔記事本(++)。

+0

在控制檯中是否有任何錯誤? 'pdfData'中的數據類型是什麼?如果它是一個文件,我會假設二進制數據,這可能是你的問題的原因,因爲它不能被序列化 –

+0

@RoryMcCrossan沒有控制檯中沒有錯誤,但使用網絡選項卡我可以看到,沒有任何數據被髮送。我也編輯了我的問題。所以它很可能是二進制數據,我將如何使用AJAX發送這個數據? – lordvlad30

回答

0

好了,所以我能夠將所有數據發送到服務器作爲字符串,這是jQuery的/ JavaScript的請求,現在的樣子:

var obj = { json: stringData, pdf: pdfData }; 

$.ajax({ 
     url: url, 
     headers: header, 
     data: obj, 
     contentType: "application/x-www-form-urlencoded", 
     method: 'POST', 
     dataType: "json" 
    }).success(function (data, textStatus, jqXHR) { 
     console.log("succes"); 
    }).error(function (jqXHR, textStatus, errorThrown) { 
     console.log("error"); 
    }); 

服務器端保持不變。

下一步是將字符串轉換回PDF文件(讓我們希望我不花2天時間:))。

+0

爲什麼還要把pdffile轉換成字符串呢?在您的JS代碼中使用「FormData」將其作爲二進制數據發送到「HttpPostedFileBase」。 –

+0

@RoryMcCrossan我無論出於何種原因都遇到了表單數據問題,沒有將pdf轉換爲Base64並以此方式發送。即使增加了base64字符串的大小,也可以運行:/。我(和團隊)也有時間限制,現在它可以工作,我們終於可以繼續前進,即使這不是最好的解決方案。 – lordvlad30

+0

如果我們有時間留在項目中,我們將使用FormData進行嘗試。謝謝您的幫助 – lordvlad30