这是一个非常具体的问题,让我特别困惑。简而言之:我在一个咨询网站上工作,该网站从API获取数据并加载了AJAX。我现在正试图将旧的存档聊天预先加载并在菜单中单击css显示。
问题在于:它有效......但只有大约1/3次或重新加载页面后。我不明白这是怎么回事,要么它应该起作用,要么它不起作用。 我检查过并且数据总是被加载(因为当前的聊天是先打开并始终有效) 那怎么可能呢?
$.ajax({
type: 'POST',
url: '/vsbt/counselling/archive/',
data: {},
}).done(function(data) {
console.log('ajax /vsbt/counselling/archive/');
console.log(data);
//menu is created
$('#counselling_status').append('<ul class="archivedCounsellings"></ul>');
$('.archivedCounsellings').append('<h2>Archivierte Chats</h2>')
for (var i = 0; i < data.length; i++) {
//menu items are added
var that = data[i].messages[0].title;
$('.archivedCounsellings').append('<li class="' + that + '"><a>' + that + '</a></li>')
$('#vbst_communication_container').prepend($('<div class="counselling inactive ' + that + '" />')
.append($('<h2>' + that + '<h2>')));
//the messages are added with to classes for styling
data[i].messages.forEach(function(message) {
$("div." + that)
.append($('<div />')
.addClass(message.type)
.append($('<p />')
.text(message.message)))
});
//this doesn't work either, you can maybe tell me why, but that's not the issue
$('.counselling').data("status", [i]);
}
$(".archivedCounsellings").append('<li class="aktuell"><a><br>Zur aktuellen Beratung</a></li>');
//click event to toggle the displayed counseling
$('.archivedCounsellings li').click(function() {
$('.counselling').addClass('inactive');
$('div .' + $(this).attr('class')).removeClass('inactive');
//workaround which works, but isn't really acceptable
// no load workaround
// if($('.openCounselling').siblings().length == 0){
// window.location.reload();
// }
// $('.statusDisplay').text($('#job_status_' + $(this).attr('class')).data("status"));
// console.log($('div .' + $(this).attr('data-status')));
});
PS。我知道咨询中的拼写错误&#39;
PPS。如果你发现一个明显使它失败的错误,那么在复制时可能会发生这种错误,请记住,它确实有效。
答案 0 :(得分:1)
好的,如果有人遇到这个问题:我刚刚解释了AJAX更接近,基本上AJAX或多或少同时发出所有请求。无论在完成功能中发生什么,都会发生,因此成功的数据请求。 我所做的是在不同的功能中启动所述元素的容器。所以偶尔会有一点慢,而且没有地方可以将我的元素追加到 - &gt;没有错误,什么也没发生。 任何人都不太可能看到这一点,因为它非常具体,但也许这会帮助某人,至少我现在知道得更好