[英]'undefined' Error when Populating Selectbox with jquery
I have this code to populate a selectbox with aa list of banks using jquery我有这个代码来填充一个选择框,其中包含使用 jquery 的银行列表
let bank_dropdown = $('#bank');
bank_dropdown.empty();
bank_dropdown.prop('selectedIndex', 0);
const bank_url = 'https://ravesandboxapi.flutterwave.com/v2/banks/NG?public_key=FLWPUBK-3f**************1d15e97-X';
// Populate bank_dropdown with list of banks
$.getJSON(bank_url, function (data) {
$.each(data, function (key, entry) {
bank_dropdown.append($('<option></option>').attr('value', entry.data.Banks.Code).text(entry.data.Banks.Name));
})
});
html html
<div class="form-group">
<small><b><label class="float-left" for="inputCategory">Bank</label></b></small>
<select name="bank" id="bank" class="form-control form-control-sm" required="true">
</select>
</div>
The returned response of the url above looks like this上面url的返回响应是这样的
{
"status": "success",
"message": "SUCCESS",
"data": {
"Banks": [
{
"Id": 132,
"Code": "560",
"Name": "Page MFBank"
},
{
"Id": 133,
"Code": "304",
"Name": "Stanbic Mobile Money"
}
...
],
}
}
but for some reason i keep getting this error in console但出于某种原因,我一直在控制台中收到此错误
Uncaught TypeError: Cannot read property 'Banks' of undefined
未捕获的类型错误:无法读取未定义的属性“Banks”
It looks like your data.data object is itself an object, not an array, and you are trying to iterate over it.看起来您的 data.data 对象本身就是一个对象,而不是一个数组,并且您正在尝试对其进行迭代。
{
"status": "success",
"message": "SUCCESS",
"data": { <- This is an object, not an array
"Banks": [] <- This is the array
}
}
Try this (using data.data.Banks):试试这个(使用 data.data.Banks):
$.each(data.data.Banks, function (key, entry) {
bank_dropdown.append($('<option></option>').attr('value', entry.Code).text(entry.Name));
})
If it helps, you can rename your response object to "res" or "response" for clarity如果有帮助,为了清楚起见,您可以将响应对象重命名为“res”或“response”
$.getJSON(bank_url, function (res) {
// now use res.data.Banks
$.each(res.data.Banks, function (key, entry) {
bank_dropdown.append($('<option></option>').attr('value', entry.Code).text(entry.Name));
})
});
You are iterating the wrong object.您正在迭代错误的对象。 See the snippet here:
请参阅此处的片段:
const data = { "status": "success", "message": "SUCCESS", "data": { "Banks": [{ "Id": 132, "Code": "560", "Name": "Page MFBank" }, { "Id": 133, "Code": "304", "Name": "Stanbic Mobile Money" }], } }; const bank_dropdown = $("#bank_dropdown"); $.each(data.data.Banks, function(key, entry) { bank_dropdown.append( $('<option></option>').val(entry.Code).html(entry.Name) ); })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="bank_dropdown"> </select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.