How can I get javascript to read from a .json file?

前端 未结 5 1748
-上瘾入骨i
-上瘾入骨i 2020-12-01 00:48

My script currently looks like this:



        
5条回答
  •  遥遥无期
    2020-12-01 01:30

    NOTICE: AS OF JULY 12TH, 2018, THE OTHER ANSWERS ARE ALL OUTDATED. JSONP IS NOW CONSIDERED A TERRIBLE IDEA

    If you have your JSON as a string, JSON.parse() will work fine. Since you are loading the json from a file, you will need to do a XMLHttpRequest to it. For example (This is w3schools.com example):

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var myObj = JSON.parse(this.responseText);
            document.getElementById("demo").innerHTML = myObj.name;
        }
    };
    xmlhttp.open("GET", "json_demo.txt", true);
    xmlhttp.send();
    
    
    
    
    

    Use the XMLHttpRequest to get the content of a file.

    The content is written in JSON format, and can easily be converted into a JavaScript object.

    Take a look at json_demo.txt

    It will not work here as that file isn't located here. Go to this w3schools example though: https://www.w3schools.com/js/tryit.asp?filename=tryjson_ajax

    Here is the documentation for JSON.parse(): https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

    Here's a summary:

    The JSON.parse() method parses a JSON string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.

    Here's the example used:

    var json = '{"result":true, "count":42}';
    obj = JSON.parse(json);
    
    console.log(obj.count);
    // expected output: 42
    
    console.log(obj.result);
    // expected output: true

    Here is a summary on XMLHttpRequests from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest:

    Use XMLHttpRequest (XHR) objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. This enables a Web page to update just part of a page without disrupting what the user is doing. XMLHttpRequest is used heavily in Ajax programming.

    If you don't want to use XMLHttpRequests, then a JQUERY way (which I'm not sure why it isn't working for you) is http://api.jquery.com/jQuery.getJSON/

    Since it isn't working, I'd try using XMLHttpRequests

    You could also try AJAX requests:

    $.ajax({
        'async': false,
        'global': false,
        'url': "/jsonfile.json",
        'dataType': "json",
        'success': function (data) {
            // do stuff with data
        }
    });
    

    Documentation: http://api.jquery.com/jquery.ajax/

提交回复
热议问题