代码之家  ›  专栏  ›  技术社区  ›  Md Kamran Azam

如何使用JQuery存储从URL获取的JSON值?

  •  0
  • Md Kamran Azam  · 技术社区  · 7 年前

    我是JQuery的新手。我正试图开发一个小型旅游网站,以检查PNR。我目前正在使用一家旅游公司提供的API。只要我们点击API Url,browser就会以JSON格式显示结果。

    我正在使用JQuery、JS和HTML。我想知道如何在变量中存储从命中API获得的JSON值(字符串格式),并在稍后的脚本中使用它。

    注:虽然我在Stackoverflow中找到了很多答案,但没有一个结果是有效的。请提供适当价值的帮助。

    示例代码:(我使用一个文本框和按钮)

        <script>
    function search_pnr(){
    var pnr = $('#input_pnr').val();
    var result;
    var url = "http://api website/pnr"+pnr;
    
    //Suggest the code here, to fetch the result from url and store in the variable result.
    
    </script>
    
    <input type="text" placeholder="Enter PNR" id ="input_pnr"/>
    <input type="button" value="Search PNR" onclick="search_pnr()"/>
    

    下面是从服务器获取的JSON值

    {"to_station": {"lng": 77.2888291, "name": "ANAND VIHAR TERMINAL", "lat": 28.6118176, "code": "ANVT"}, "total_passengers": 1, "pnr": "6717552286", "journey_class": {"name": null, "code": "3A"}, "train": {"classes": [{"available": "N", "name": "SECOND AC", "code": "2A"}, {"available": "Y", "name": "THIRD AC", "code": "3A"}, {"available": "N", "name": "SECOND SEATING", "code": "2S"}, {"available": "N", "name": "FIRST AC", "code": "1A"}, {"available": "Y", "name": "AC CHAIR CAR", "code": "CC"}, {"available": "N", "name": "FIRST CLASS", "code": "FC"}, {"available": "N", "name": "3rd AC ECONOMY", "code": "3E"}, {"available": "N", "name": "SLEEPER CLASS", "code": "SL"}], "days": [{"code": "MON", "runs": "N"}, {"code": "TUE", "runs": "Y"}, {"code": "WED", "runs": "N"}, {"code": "THU", "runs": "Y"}, {"code": "FRI", "runs": "N"}, {"code": "SAT", "runs": "Y"}, {"code": "SUN", "runs": "N"}], "number": "22405", "name": "BGP-ANVT GARIB RATH"}, "from_station": {"lng": 86.9828131, "name": "BHAGALPUR", "lat": 25.2494829, "code": "BGP"}, "passengers": [{"booking_status": "CNF/G12/36/GN", "no": 1, "current_status": "CNF/-/0/GN"}], "reservation_upto": {"lng": 77.2888291, "name": "ANAND VIHAR TERMINAL", "lat": 28.6118176, "code": "ANVT"}, "response_code": 200, "boarding_point": {"lng": 86.9828131, "name": "BHAGALPUR", "lat": 25.2494829, "code": "BGP"}, "debit": 3, "doj": "25-08-2018", "chart_prepared": false}
    

    还请帮助如何读取给定JSON中的对象和数组。

    7 回复  |  直到 7 年前
        1
  •  1
  •   Sabyasachi Patra    7 年前

    可以使用ajax从url获取结果

    var result;
    var url = "http://api website/pnr"+pnr;
    $.ajax
    ({
        url: url,
        type: 'GET',
        dataType: 'json',
        success: function(data)
        {
            result = data;
            alert(JSON.stringify(data));
        }
    });
    
        2
  •  1
  •   MyTwoCents    7 年前

    您只需要解析JSON和如何读取每个对象。这会给你一个好的开始

    $.ajax({
        type: "GET",
        url: "http://api_website/pnr"+pnr,
        data: data,
        success: function(resultData) { 
            console.log(resultData);
    
            var to_station = resultData.to_station;
            var trains = resultData.train;
            var passengers = resultData.passengers;
    
            alert("Station Name: "to_station.name);
            alert("Passengers: "passengers.booking_status);
    
    
        },
        error(function() { 
            alert("Something went wrong"); 
        }
    });
    

    你可以看更多关于 how to read JSON here .

        3
  •  0
  •   Etomanon    7 年前
    $.ajax({
      method: "GET",
      url: url
    })
      .done(function( data ) {
        console.log(data)
        // see what properties you need from data object and save it to variable
        var data = data
      });
    
        4
  •  0
  •   flatbreadcandycane    7 年前

    首先,

    使用javascript文件….API调用最好在js文件中完成,而不是在脚本标记中完成。 第二件事,如果你想以json格式存储它, 可以像声明url变量那样将其存储在一个值中。 因为,您正在获取数据,所以我假设这是一个get请求,您可以在以下链接中找到关于它们的更多信息-

    1. https://www.sitepoint.com/ajaxjquery-getjson-simple-example/
    2. https://api.jquery.com/jquery.get

    此外,如果数据不是很敏感,可以将其存储在浏览器的本地存储中,以便以后也可以在其他网页中访问它。

    在您当前的json数据中,如果您将其声明为一个变量,我会说 apiResult 你的终点站是 apiResult.to_station ,液化天然气价值为 apiResult.to_station.lng 等等。

        5
  •  0
  •   Jacob    7 年前

    希望这些都有帮助,祝你好运。

    每个人都已经添加了AJAX示例,所以我将省略这一点。

    因此,要读取对象,只需通过各种方法解析所需内容,如果您知道对象的外观和确切的需求,则可以使用点表示法。如果您希望更动态地获取内容,可以使用高阶函数或for循环以及对象原型示例获取条目( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries )

    您可以考虑使用localStorage来存储信息,这取决于您使用的是内置的Web API 这是MDN的定义

    只读localStorage属性允许您访问存储 对象作为文档的源;存储的数据保存在 浏览器会话。localStorage类似于sessionStorage,除了 虽然存储在localStorage中的数据没有过期时间,但是 当页会话结束时,存储在sessionStorage中的内容将被清除 也就是说,当页面关闭时。

    https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

        6
  •  0
  •   Thomas    7 年前

    您可能想使用AJAX。您必须确定服务器将如何检索数据。如果是JSON格式,请执行以下操作:

    <script>
        function search_pnr(){
            var pnr = $('#input_pnr').val();
            var result;
            var url = "http://api website/pnr"+pnr;
            $.getJSON( url, function( data ) {
                result = data;
                $.each( data, function( key, value ) {
                    // whatever with keys and values if needed
                }
            );
    
        }
    </script>
    

    Ref w3 Schools

    JQuery official website

        7
  •  -1
  •   Hameed    7 年前

    所有当前的浏览器都内置了本地JSON支持。因此,只要你不使用像IE6/7这样的史前浏览器,你就可以这么简单地做到:

    var j={"name":"binchen"};
    JSON.stringify(j); // '{"name":"binchen"}'
    

    更多信息请访问 link