reading server file with javascript

后端 未结 2 1782
夕颜
夕颜 2020-12-05 12:19

I have a html page using javascript that gives the user the option to read and use his own text files from his PC. But I want to have an example file on the server that the

相关标签:
2条回答
  • 2020-12-05 13:03

    Your best bet, since the file is on your server is to retrieve it via "ajax". This stands for Asynchronous JavaScript And XML, but the XML part is completely optional, it can be used with all sorts of content types (including plain text). (For that matter, the asynchronous part is optional as well, but it's best to stick with that.)

    Here's a basic example of requesting text file data using ajax:

    function getFileFromServer(url, doneCallback) {
        var xhr;
    
        xhr = new XMLHttpRequest();
        xhr.onreadystatechange = handleStateChange;
        xhr.open("GET", url, true);
        xhr.send();
    
        function handleStateChange() {
            if (xhr.readyState === 4) {
                doneCallback(xhr.status == 200 ? xhr.responseText : null);
            }
        }
    }
    

    You'd call that like this:

    getFileFromServer("path/to/file", function(text) {
        if (text === null) {
            // An error occurred
        }
        else {
            // `text` is the file text
        }
    });
    

    However, the above is somewhat simplified. It would work with modern browsers, but not some older ones, where you have to work around some issues.

    Update: You said in a comment below that you're using jQuery. If so, you can use its ajax function and get the benefit of jQuery's workarounds for some browser inconsistencies:

    $.ajax({
        type:    "GET",
        url:     "path/to/file",
        success: function(text) {
            // `text` is the file text
        },
        error:   function() {
            // An error occurred
        }
    });
    

    Side note:

    I found that javascript is client based...

    No. This is a myth. JavaScript is just a programming language. It can be used in browsers, on servers, on your workstation, etc. In fact, JavaScript was originally developed for server-side use.

    These days, the most common use (and your use-case) is indeed in web browsers, client-side, but JavaScript is not limited to the client in the general case. And it's having a major resurgence on the server and elsewhere, in fact.

    0 讨论(0)
  • 2020-12-05 13:04

    The usual way to retrieve a text file (or any other server side resource) is to use AJAX. Here is an example of how you could alert the contents of a text file:

    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    xhr.onreadystatechange = function(){alert(xhr.responseText);};
    xhr.open("GET","kgr.bss"); //assuming kgr.bss is plaintext
    xhr.send();
    

    The problem with your ultimate goal however is that it has traditionally not been possible to use javascript to access the client file system. However, the new HTML5 file API is changing this. You can read up on it here.

    0 讨论(0)
提交回复
热议问题