访问通过JSON AJAX数组中的数据 - >对象
我有这样的JSON结果:访问通过JSON AJAX数组中的数据 - >对象
[{
"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
数组。如果你引用它,你会得到你的结果。
是的完美的作品 –
我为什么要使用“结果“在[0]之前的单词? –
是的,你可以引用任何文件解释这个? –
做一个,
console.log(nhs_hospitals)
,看看它是否打印数组,如果没有则意味着p_OXHR.responseText
不包含任何东西。你确定responseText
是从服务器发送的内容吗?
以下,我在控制台中获得了{success:true,result:Array} –
如果'console.log(nhs_hospitals)'打印出'{success:如此,结果是:数组}'那么你应该更新代码,以 '警报(nhs_hospitals.result [0] .postcode);' 如果不发布响应 – Picko
试试:
$.ajax(api_search_hospitals, {
success: function (data) {
nhs_hospitals = $.parseJSON(data);
alert(nhs_hospitals[0].postcode);
}
});
nhs_hospitals的内容是什么? –
问题在于'nhs_hospitals'对象里面有'result'数组。如果你引用它,你应该得到结果,因为我已经发布在 – nikjohn