在javascript中完成btoa()后创建HTTP请求

时间:2017-03-04 16:34:13

标签: javascript xmlhttprequest

我正在尝试将一个文件作为base64字符串发送到服务器。服务器要求数据作为HTTP“POST”发送,信息为JSON。但是,在我的代码中,请求是在转换字符串之前发送的。请告知我在我的代码中犯了什么错误。

这是转换文件的功能

function handleFileSelect(evt) {
var files = evt.files;
var file = files[0];
var string = '';
if (files && file) 
{
    var reader = new FileReader();
    reader.onload = function(readerEvt)
    {
        var binaryString = readerEvt.target.result;
        string = btoa(binaryString);
    };
    reader.readAsBinaryString(file);
    }
create_HTTP_request(string);};

这是我的HTTP请求函数

function create_HTTP_request(string)
{
 runTask('task_required_by_server', {'file' : string}, format_data);
 };



function runTask(task_name, inputs, callback){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                console.log('Request Successful!');
                callback(xmlhttp.responseText);
                console.log(xmlhttp.responseText);
            }
            else if(xmlhttp.readyState == 4 && xmlhttp.status == 500)
             {
                 console.log(xmlhttp.responseText);
             }
            else {
                    console.log(xmlhttp.responseText);
                }
            }
    xmlhttp.open("POST", '/api/v1/jobs', true);
    xmlhttp.setRequestHeader('Content-Type', 'application/json');
    xmlhttp.send(JSON.stringify({name: task_name, input: inputs}));
  };

我是Javascript的新手。我基本上只想在btoa()函数完成后调用我的create_HTTP_request函数。谢谢你的时间!

0 个答案:

没有答案