簡體   English   中英

通過JSON AJAX數組->對象訪問數據

[英]Access the data through JSON AJAX array -> object

我有這個json結果:

  [{
    "website": "http://www.rlbuht.nhs.uk",
    "sub_type": "Hospital",
    "sector": "NHS Sector",
    "postcode": "L3 5PS",
    "phone": "0151 706 2000",
    "partial_postcode": "L3",
    "parent_o_d_s_code": "RQ6",
    "parent_name": "Royal Liverpool and Broadgreen University Hospitals NHS Trust",
    "organisation_type": "Hospital",
    "organisation_status": "Visible",
    "organisation_name": "Royal Liverpool University Dental Hospital",
    "organisation_id": "41513",
    "organisation_code": "RQ614",
    "longitude": "-2.9669923782348633",
    "latitude": "53.408927917480469",
    "is_pims_managed": "True",
    "fax": "0151 706 5806",
    "email": "",
    "county": "Merseyside",
    "city": "Liverpool",
    "address3": "",
    "address2": "",
    "address1": "Pembroke Place"
}]

這是我的代碼,用於訪問url並獲取可以正常工作的json:

$("#search_hospitals").on('click', function(p_oEvent_search_hospitals) {

     var api_search_hospitals, postcode, nhs_hospitals;
     p_oEvent_search_hospitals.preventDefault();
     postcode = $('#input_nhs_h').val();
     api_search_hospitals = 'https://data.gov.uk/data/api/service/health/hospitals/partial_postcode?partial_postcode=' + postcode;

     $.ajax(api_search_hospitals, {

         complete: function(p_OXHR, p_sStatus) {

             nhs_hospitals = $.parseJSON(p_OXHR.responseText);

             alert(nhs_hospitals[0].postcode);

         }

     });
 });

我只是在測試alert(nhs_hospitals[0].postcode); 看看我是否可以獲取數據,但總是得到TypeError: undefined is not an object (evaluating 'nhs_hospitals[0].postcode') ...

有人可以幫我說我在做錯什么,為什么我變得“未定義”嗎? 謝謝

為了更容易,我做到了:

complete: function(p_OXHR, p_sStatus) {

        nhs_hospitals = $.parseJSON(p_OXHR.responseText);
        hospital = nhs_hospitals.result[0];

        alert(hospital.postcode);

    }

 $('button').on('click', function(p_oEvent_search_hospitals) { var api_search_hospitals, postcode, nhs_hospitals; p_oEvent_search_hospitals.preventDefault(); postcode = 'EC1A' api_search_hospitals = 'https://data.gov.uk/data/api/service/health/hospitals/partial_postcode?partial_postcode=' + postcode; $.ajax(api_search_hospitals, { complete: function(p_OXHR, p_sStatus) { nhs_hospitals = $.parseJSON(p_OXHR.responseText); console.log(nhs_hospitals); alert(nhs_hospitals.result[0].postcode); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>search</button> 

這應該工作。 問題在於nhs_hospitals對象內部具有result數組。 如果您引用它,您將得到結果。

做一個

console.log(nhs_hospitals)

並查看是否打印該數組(如果沒有),則意味着p_OXHR.responseText不包含任何內容。 您確定responseText是從服務器發送的內容嗎?

試試吧:

 $.ajax(api_search_hospitals, {
                    success: function (data) {

                        nhs_hospitals = $.parseJSON(data);

                        alert(nhs_hospitals[0].postcode);

                    }

                });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM