Jquery Ajax调用返回&x27;未定义';-公司之家API
我通过公司内部API获取数据,当我在页面上输出json数组时,它会很好地循环,但是当我在jQuery中循环时,我会得到大约16个未定义的结果。我到处都想找到答案,但我就是不太明白。我唯一的想法是,16个未定义的东西埋在另一个物体里 非常感谢您的帮助,代码如下:Jquery Ajax调用返回&x27;未定义';-公司之家API,jquery,ajax,Jquery,Ajax,我通过公司内部API获取数据,当我在页面上输出json数组时,它会很好地循环,但是当我在jQuery中循环时,我会得到大约16个未定义的结果。我到处都想找到答案,但我就是不太明白。我唯一的想法是,16个未定义的东西埋在另一个物体里 非常感谢您的帮助,代码如下: jQuery(function($) { $('[data-button-search]').click(function(event) { var $this = $(this); event.prevent
jQuery(function($) {
$('[data-button-search]').click(function(event) {
var $this = $(this);
event.preventDefault();
var value = $('[data-company-id]').val();
$.ajax({
type: 'GET',
url: "https://link.to.site.com/company/"+value+"/name",
dataType: 'json', // ** ensure you add this line **
success: function(data){
$.each(data, function(){
$.each(this, function(key, val) {
console.log(val.title + " : company number : " + val.company_number);
$('[data-select]').append(`
<option value='`+key+`'>`+val.title+`</option>
`);
});
});
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Error!");
}
});
});
});
登录控制台
问题: 您看到的行为是因为您正在迭代返回数据上的所有属性,然后尝试迭代每个属性的“items”属性。这将导致您获得一个成功的返回,然后得到16个未定义的返回(或json有多少属性) 解决方案: 不使用嵌套的$。每个循环都可以重构此块:
success: function(data){
$.each(data, function(){
$.each(this, function(key, val) {
console.log(val.title + " : company number : " + val.company_number);
$('[data-select]').append(`
<option value='`+key+`'>`+val.title+`</option>
`);
});
});
},
成功:函数(数据){
$.each(数据,函数(){
$。每个(此,函数(键,val){
控制台日志(val.title+“:公司编号:“+val.company\u编号);
$(“[数据选择]”)。追加(`
`+val.title+`
`);
});
});
},
。。。到更简单的版本:
success: function(data){
$.each(data.items, function(key, val) {
console.log(val.title + " : company number : " + val.company_number);
$('[data-select]').append(`
<option value='`+key+`'>`+val.title+`</option>
`);
});
},
成功:函数(数据){
$.each(数据项、函数(键、值){
控制台日志(val.title+“:公司编号:“+val.company\u编号);
$(“[数据选择]”)。追加(`
`+val.title+`
`);
});
},
在上面的代码块中,我去掉了外部$.each循环,而将内部循环改为目标“data.items”
希望有帮助。您对问题的描述不清楚。您尝试迭代的实际JSON数据的示例要比PHP
print\r()
dump好得多如果我不得不猜测,您正在迭代整个对象中的所有键/值对。相反,您希望只迭代data.items
,即data.items.forEach(({title,company\u number})=>console.log(title,company\u number))
@Phil Sorry buddy,深夜!我已经用JSON数据对其进行了更新——我将如何循环遍历这些项?这只是一个,我正在加载大约50个结果,你可以在完整的结果中看到。Ryan,你太棒了!我从没想过要改变这一点。谢谢你,伙计!
success: function(data){
$.each(data.items, function(key, val) {
console.log(val.title + " : company number : " + val.company_number);
$('[data-select]').append(`
<option value='`+key+`'>`+val.title+`</option>
`);
});
},