[英]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.