Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX post PDF文档和JSON数据_Javascript_Jquery_Asp.net_Ajax_Post - Fatal编程技术网

Javascript AJAX post PDF文档和JSON数据

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

我试图使用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 };
    $.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。谢谢你的帮助