我需要从javascript中读取文本文件

时间:2016-10-23 08:48:05

标签: javascript xmlhttprequest

我正在使用javascript编写网页,以便根据用户请求从服务器读取文本格式的数据文件。加载文本文件后,我需要稍微操纵数据。

我一直在使用XMLHttpRequest进行加载,但是,现在我看到同步请求已被弃用"。我无法在数据加载之前开始操作数据,所以在这种情况下我该怎么办?

2 个答案:

答案 0 :(得分:8)

使用asynchronous request

function doGET(path, callback) {

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            // The request is done; did it work?
            if (xhr.status == 200) {
                // ***Yes, use `xhr.responseText` here***
                callback(xhr.responseText);
            } else {
                // ***No, tell the callback the call failed***
                callback(null);
        }
    };
    xhr.open("GET", path);
    xhr.send();
}

function handleFileData(fileData) {
    if (!fileData) {
        // Show error
        return;
    }
    // Use the file data
}

// Do the request
doGET("/path/to/file", handleFileData);

或者使用promises,这是处理回调的更现代的方式:

function doGET(path, callback) {
    return new Promise(function(resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4) {
                // The request is done; did it work?
                if (xhr.status == 200) {
                    // Yes, use `xhr.responseText` to resolve the promise
                    resolve(xhr.responseText);
                } else {
                    // No, reject the promise
                    reject(xhr);
                }
             }
        };
        xhr.open("GET", path);
        xhr.send();
    });
}

// Do the request
doGET("/path/to/file")
    .then(function(fileData) {
        // Use the file data
    })
    .catch(function(xhr) {
        // The call failed, look at `xhr` for details
    });

答案 1 :(得分:3)

由于您要处理本地文件,请尝试此操作

利用XMLHttpRequest

readFile('File:\\\yourpath');

然后你必须打电话给{{1}}

{{1}}