Javascript AJAX post PDF文档和JSON数据
我试图使用AJAX方法(jQuery)将PDF文档和一些字符串化的JSON数据发布到ASP.NETWebAPI(2)。以下是我的方法不起作用: JAVASCRIPT:Javascript AJAX post PDF文档和JSON数据,javascript,jquery,asp.net,ajax,post,Javascript,Jquery,Asp.net,Ajax,Post,我试图使用AJAX方法(jQuery)将PDF文档和一些字符串化的JSON数据发布到ASP.NETWebAPI(2)。以下是我的方法不起作用: JAVASCRIPT: //because the user must be authorized (getting the Token using a POST works just fine) var header = { Authorization: "bearer " + user.access_token }; $.
//because the user must be authorized (getting the Token using a POST works just fine)
var header = { Authorization: "bearer " + user.access_token };
$.ajax({
url: url,
headers: header,
data: { json: stringData, pdf : pdfData},
contentType: "application/x-www-form-urlencoded",
method: 'POST'
}).success(function (data, textStatus, jqXHR) {
console.log("succes");
});
}).error(function (jqXHR, textStatus, errorThrown) {
console.log("error");
});
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; }
}
使用postman此方法有效(请参见屏幕截图),但使用上面的AJAX方法无效。
如果此信息有用,则适用于移动应用程序(跨域)
非常感谢所有的帮助!
提前谢谢
(这是如何配置邮递员的图像:)
编辑:
pdfData
是一个用jsPDF制作的pdf文件(doc.output
),所以我认为它是字符串,就像你用记事本(++)打开一个pdf文档一样。好的,所以我可以将所有数据作为字符串发送到服务器,这就是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天的时间:)。控制台中是否有错误?
pdfData
中的数据类型是什么?如果它是一个文件,我会假设二进制数据可能是您的问题的原因,因为它不可能是serialised@RoryMcCrossan不,控制台中没有错误,但使用网络选项卡,我可以看到没有发送任何数据。我还编辑了我的问题。所以它很可能是二进制数据,我如何使用AJAX发送它呢?为什么还要费心将pdffile转换成字符串呢?在JS代码中使用FormData
将其作为二进制数据发送到HttpPostedFileBase
。@RoryMcCrossan我在表单数据方面遇到了问题,无论出于何种原因,都无法将pdf转换为te Base64并以这种方式发送。即使base64字符串的大小增加了:/,这仍然有效。我(和团队)也有一个时间限制,现在它起作用了,我们终于可以继续前进了,即使这不是最好的解决方案。如果我们在项目上还有时间,我们将尝试使用FormData。谢谢你的帮助