在ajax中发送byte []

时间:2017-02-27 07:15:06

标签: javascript jquery ajax

我需要将包含id,name和file(PdfBytes)byte []的数据与ajax一起发送到我的服务。

如何将我的PDF文件添加到var pdf并将其添加到我的ajax。

我的代码

var PdfBytes;
//Tried to fill PdfBytes with get,didnt work
$.get('http://testservices.xxx/PdfService/MYTest.pdf', function(data) 
{
   PdfBytes=data;

});


        var ConvertHtmlToPdfAndSendEmail = {
        "PdfBytes":PdfBytes,
         id": id,
         "Name": name
           };

  $.ajax({
                type: "POST",
                data: JSON.stringify(ConvertHtmlToPdfAndSendEmail),
                dataType: 'json',
                url: "http://testservices.xxx/ConvertHtmlToPdfAndDownload",
                contentType: 'application/json; charset=utf-8',
                async: true,
                cache: false,
                success: function (result) {
                    //my code

                },
                error: function (req, err) {
                   //my code
                }
            })

在服务器中我得到PdfBytes为空

函数期望获得byte[] PdfBytes

播种如何将我的pdf从我的电脑上传到var PdfBytes,并将其发送到我的服务中。

2 个答案:

答案 0 :(得分:1)

在Ajax中发送byte []有两种方法 您将byte []转换为GET的字符串或转换为POST的json =>您应该将字节数组转换为文本的主要内容 并在调用服务器脚本时恢复数据格式

$.ajax({
    type: "GET",
    url: "http://testservices.xxx/ConvertHtmlToPdfAndDownload?data="+encodeURI(byte_array.join())
});

$.ajax({
    type: "POST",
    dataType: "json",
    data: JSON.stringify(byte_array),
    url: "http://testservices.xxx/ConvertHtmlToPdfAndDownload"
});

希望有所帮助!

答案 1 :(得分:0)

我认为您应该使用期权通话' async'这样做:

var PdfBytes = $.ajax({
    url: 'http://testservices.xxx/PdfService/MYTest.pdf',
    type: 'GET',
    async: false
});

var ConvertHtmlToPdfAndSendEmail = {
    PdfBytes: PdfBytes,
    id: id,
    Name: name
};

$.ajax({
    type: "POST",
    data: JSON.stringify(ConvertHtmlToPdfAndSendEmail),
    dataType: 'json',
    url: "http://testservices.xxx/ConvertHtmlToPdfAndDownload",
    contentType: 'application/json; charset=utf-8',
    async: true,
    cache: false,
    success: function (result) {
        //my code

    },
    error: function (req, err) {
        //my code
    }
});

希望有所帮助。