#javascript #jquery
Вопрос:
я пытаюсь перебрать свои данные , но они возвращаются undefined
для первого цикла! , я пробовал несколько способов, но все еще не работает !
$.ajax({
type:'GET',
url:'/categories',
success:function(data){
var cates = data.data;
console.log(cates)
var my_div;
$.each(cates,function(key,value){
console.log(value)
var beds = value['beds']
console.log(beds)
var f_type = value['f_type']
var room_type = value['room_type']
var total = value['total']
var balcon = value['balcon']
if(balcon==true){
balcon='True'
}else{
balcon='False'
}
var link = '/rooms/' f_type '/' room_type '/' beds '/' balcon;
my_div ='<a href="' link '" class="transition transform cursor-pointer duration-400 hover:scale-105 hover:shadow-xl">';
my_div ='<div class="h-32 overflow-hidden rounded-tl-2xl rounded-tr-2xl room"></div>';
my_div ='<div class="items-center p-2 rounded-bl-xl rounded-br-xl bglightpurple">';
my_div ='<div class="text-center rounded-lg" style="background: #534e70;">';
my_div ='<p class="inline textorange "><i class="bi bi-columns-gap"></i></p>'
my_div ='<p class="inline text-white">' room_type ' - ' f_type ' - ' beds ' beds</p>';
my_div ='</div>';
my_div ='</div>';
my_div ='</a> ';
})
document.getElementById('my_cates').innerHTML = my_div;
},
error: function(){
}
})
<div class="p-4 mt-3">
<div class="grid grid-cols-1 gap-6 pt-3 pt-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 " id="my_cates">
</div>
</div>
я также пытался использовать for(i=0;i<cates.length;i )
, но все равно он возвращает то же самое, не определено для первого цикла ?!
я что-то сделал не так ?
заранее спасибо
Комментарии:
1. Подсказка: прекратите использовать объединение строк со всеми возможными ошибками и начните использовать строки шаблонов , которые одновременно легче читать и гораздо менее подвержены ошибкам. Также не полагайтесь на
==
, используйте===
и проверяйте правильные значения, поэтому в этом случае проверьтеbalcon
строку"true"
. И наконец: прекратите использоватьvar
. Либо используйтеlet
, если вам нужны изменяемые переменные, либоconst
если вы хотите «установить один раз и ошибка при переназначении». JS стал значительно лучше в 2015 году, похоже, вы используете код до 2015 года.2. Конечная точка, вероятно, не возвращает никаких данных? Показывает ли «console.log(cates)» массив объектов?
3. @BenzStevox это отлично работает в консоли
4. @Mike’Pomax’Camermans я удалил тестовый случай и изменил
var
его наlet
все ту же проблему
Ответ №1:
просто поместите его в функцию и определите my_div
, как ==""
он работает, весь код
function cates(){
var my_div = "";
$.ajax({
type:'GET',
url:'/categories',
success:function(data){
var cates = data.data;
for(i=0;i<cates.length;i ){
var beds = cates[i]['beds']
var f_type = cates[i]['f_type']
var room_type = cates[i]['room_type']
var total = cates[i]['total']
var balcon = cates[i]['balcon']
if(balcon==true){
balcon='True'
}else{
balcon='False'
}
var link = '/rooms/' f_type '/' room_type '/' beds '/' balcon;
my_div ='<a href="' link '" class="transition transform cursor-pointer duration-400 hover:scale-105 hover:shadow-xl">';
my_div ='<div class="h-32 overflow-hidden rounded-tl-2xl rounded-tr-2xl room"></div>';
my_div ='<div class="items-center p-2 rounded-bl-xl rounded-br-xl bglightpurple">';
my_div ='<div class="text-center rounded-lg" style="background: #534e70;">';
my_div ='<p class="inline textorange "><i class="bi bi-columns-gap"></i></p>'
my_div ='<p class="inline text-white">' room_type ' - ' f_type ' - ' beds '</p>';
my_div ='</div>';
my_div ='</div>';
my_div ='</a> ';
}
document.getElementById('my_cates').innerHTML = my_div;
},
error: function(){
}
})
}
cates();