2017-05-31 67 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