我正在开发一个聊天应用程序,发现了一个我无法解决的错误,我被卡住了:/
基本上:我有两个不同的LocalStorage变量(kontakte
,当你向以前从未写过的人写一条消息时,会添加一个新的联系人,"chat_" + email
,这些都是您和您当前的联系人写的消息)。我的方法将每4.5秒运行一次,它测试是否有新消息(data != null
),当这是真的时,该方法将查看您当前是否有来自新消息的人的聊天页面( data[neuenabf - 4] == seite5_empfemail && seiten_aktpossonder == 5
)。
如果这也是真的,它会将新消息添加到聊天(seite_5main.innerHTML = seite_5main.innerHTML
...),当消息开始等于“!§?%&& 45es”,“!§? %&& 45ds“,”!§?%&& 45as“显示一个额外的框(弹出窗口)
问题是,聊天中未显示新消息大约每4到5次。当你查看ajax请求时,你也无法在firefox F12-console中看到这条新消息(每4到5条消息你看不到第4/5条消息)。 然后是什么让这更加疯狂的是,新邮件肯定被添加到邮件列表中(localstorage“chat _”+ email)!?
方法:
var seite_5nnnspeicher1 = [];
var seite5_spielzeitb;
function neuenachrichtabf() {
$.ajax({
dataType: "JSON",
type: 'POST',
url: 'http://...de/ajax/chat.php',
data: {sender: LOCemail, methode: "s2"},
success: function (data) {
if (data != null) {
for (neuenabf = data.length-1; neuenabf > 0; neuenabf = neuenabf - 5) {
if ((data[neuenabf-4] == seite5_empfemail) && seiten_aktpossonder == 5) {//Wenn eine neue Nachricht kommt und man aktuell bei dem Kontakt ist wo eine neue Nachricht kommt
if (data[neuenabf-1].startsWith("!§?%&&45es")) {
seite5_spielzeitb = 'Um '+data[neuenabf-1].slice(16, 19)+data[neuenabf-1].slice(19, 21)+' Uhr, den '+data[neuenabf-1].slice(10, 12)+'-'+data[neuenabf-1].slice(13, 15);
seite_5main.innerHTML = seite_5main.innerHTML + '<div id="spielanfrage_s5bekommen" style="background: white; font-size: 15px; position: relative; margin-top: 8px; margin-left: 12px; border-radius: 2px; padding: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); color: black; display: table-cell; max-width: 80%; white-space: normal; float: left; clear: both;"><font style="color: #4285f4;"><b>Spielanfrage:</b></font></br><font style="color: #656565;">'+seite5_spielzeitb+'</font></br><div style="width: 50%; height: 40px; color: #656565; float: left; line-height: 40px;" onclick="s5_spabl(\''+seite5_spielzeitb+'\')">       <img src="img/delete.png" style="position: absolute; height: 15px; margin-top: 12px;"></div><div style="width: 50%; height: 40px; float: left; color: #656565; line-height: 40px; position: relative;" onclick="s5_spakt(\''+seite5_spielzeitb+'\')">       <img src="img/done.png" style="position: absolute; height: 24px; top: 8px;"></div><font style="color: #ccc; font-size: 11px; float: right;">'+data[neuenabf]+'</font><div class="arrow-left" style="position: absolute; top: 0px; left: -9px;"></div></div>';
}
else if(data[neuenabf-1].startsWith("!§?%&&45ds"))
{
seite5_spielzeitb = 'Um '+data[neuenabf-1].slice(16, 19)+data[neuenabf-1].slice(19, 21)+' Uhr, den '+data[neuenabf-1].slice(10, 12)+'-'+data[neuenabf-1].slice(13, 15);
document.getElementById("spielanfrage_s5geschickt").innerHTML = '<font style="color: #4285f4;"><b>Spielanfrage:</b></br></font><font style="color: #656565;">'+seite5_spielzeitb+'</font></br></br><font style="color: #f44336; text-align: center;"><italic>Abgelehnt</italic></font><div class="arrow-right" style="position: absolute; bottom: 0px; right: -9px;"></div>';
document.getElementById("spielanfrage_s5geschickt").id = '';
s5_spabls = JSON.parse(localStorage.getItem("chat_"+seite5_empfemail));
index_ersetzen(s5_spabls, "ds");
}
else if(data[neuenabf-1].startsWith("!§?%&&45as"))
{
seite5_spielzeitb = 'Um '+data[neuenabf-1].slice(16, 19)+data[neuenabf-1].slice(19, 21)+' Uhr, den '+data[neuenabf-1].slice(10, 12)+'-'+data[neuenabf-1].slice(13, 15);
document.getElementById("spielanfrage_s5geschickt").innerHTML = '<font style="color: #4285f4;"><b>Spielanfrage:</b></br></font><font style="color: #656565;">'+seite5_spielzeitb+'</font></br></br><font style="color: #009688;">Angenommen</font><div class="arrow-right" style="position: absolute; bottom: 0px; right: -9px;"></div>';
document.getElementById("spielanfrage_s5geschickt").id = '';
s5_spabls = JSON.parse(localStorage.getItem("chat_"+seite5_empfemail));
index_ersetzen(s5_spabls, "as");
}
else
{
seite_5main.innerHTML = seite_5main.innerHTML + '<div style="background: white; font-size: 15px; position: relative; margin-top: 8px; margin-left: 12px; border-radius: 2px; padding: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); color: black; display: table-cell; max-width: 80%; white-space: normal; float: left; clear: both;">'+data[neuenabf-1]+'</br><font style="color: #ccc; font-size: 11px; float: left;">'+data[neuenabf]+'</font><div class="arrow-left" style="position: absolute; top: 0px; left: -9px;"></div></div>';
}
//ZUR LOKALEN STORAGE HINZUFÜGEN
if (localStorage.getItem("chat_"+seite5_empfemail))
{
seite_5nnnspeicher1 = JSON.parse(localStorage.getItem("chat_"+seite5_empfemail));
seite_5nnnspeicher1.push(seite5_empfemail, data[neuenabf], data[neuenabf-1]);
localStorage.setItem("chat_"+seite5_empfemail, JSON.stringify(seite_5nnnspeicher1));
}
else
{
localStorage.setItem("chat_"+seite5_empfemail, JSON.stringify([seite5_empfemail, data[neuenabf], data[neuenabf-1]]));
}
if (localStorage.getItem("kontakte"))
{
seite_5nnnspeicher = JSON.parse(localStorage.getItem("kontakte"));
if(index_finden(seite_5nnnspeicher, seite5_empfemail) === 1) //Wenn der aktuelle Kontakt schon in den Kontakten ist -> Nichts passiert
{
}
else //Wenn der aktuelle noch nicht in den Kontakten ist -> Kontakt hinzufügen
{
seite_5nnnspeicher.push(seite5_empfemail, seite_5name, seite_5lk, 'a');
localStorage.setItem("kontakte", JSON.stringify(seite_5nnnspeicher));
}
}
else //Wenn noch keine Kontakte da sind -> Kontakt hinzufügen
{
localStorage.setItem("kontakte", JSON.stringify([seite5_empfemail, seite_5name, seite_5lk, 'a']));
}
}
//---------//
else
{
if (localStorage.getItem("chat_"+data[neuenabf-4]))
{
seite_5nnnspeicher1 = JSON.parse(localStorage.getItem("chat_"+data[neuenabf-4]));
seite_5nnnspeicher1.push(data[neuenabf-4], data[neuenabf], data[neuenabf-1]);
localStorage.setItem("chat_"+data[neuenabf-4], JSON.stringify(seite_5nnnspeicher1));
}
else
{
localStorage.setItem("chat_"+data[neuenabf-4], JSON.stringify([data[neuenabf-4], data[neuenabf], data[neuenabf-1]]));
}
if (localStorage.getItem("kontakte"))
{
seite_5nnnspeicher = JSON.parse(localStorage.getItem("kontakte"));
if(index_finden(seite_5nnnspeicher, data[neuenabf-4]) === 1) //Wenn der aktuelle Kontakt schon in den Kontakten ist -> Nichts passiert
{
}
else //Wenn der aktuelle noch nicht in den Kontakten ist -> Kontakt hinzufügen
{
seite_5nnnspeicher.push(data[neuenabf-4], data[neuenabf-3], data[neuenabf-2], 'a');
localStorage.setItem("kontakte", JSON.stringify(seite_5nnnspeicher));
}
}
else //Wenn noch keine Kontakte da sind -> Kontakt hinzufügen
{
localStorage.setItem("kontakte", JSON.stringify([data[neuenabf-4], data[neuenabf-3], data[neuenabf-2], 'a']));
}
//---//
if (localStorage.getItem("LOCneuenawo_"+data[neuenabf-4]))
{
localStorage.setItem("LOCneuenawo_"+data[neuenabf-4], parseInt(localStorage.getItem("LOCneuenawo_"+data[neuenabf-4]))+1);
}
else
{
localStorage.setItem("LOCneuenawo_"+data[neuenabf-4], "1");
}
document.getElementById("main_menu_nkreis").style.visibility = "visible";
}
}
seite4_kontakteanz();
$('#seite_5main').scrollTop(1000000);
}
},
error: function()
{
}
});
}
function index_finden(dasarray,wert)
{
for (var i = 0; i < dasarray.length; i++)
{
if (dasarray[i] === wert)
{
return 1;
}
}
}
怎么可能,不是不可能的?
答案 0 :(得分:-1)
Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.
引用http://api.jquery.com/jquery.ajax/
所以更好地使用模式:
$.ajax({
dataType: "JSON",
type: 'POST',
url: 'http://...de/ajax/chat.php',
data: {
sender: LOCemail,
methode: "s2"
},
})
.error(function( err ) {
alert( "error: " + err );
});
.done(function( data ) {
// Your function as above
});
如上所述,没有ajax错误,所以我认为你的脚本中还有其他问题,应该在另一个问题中讨论。
如果你喜欢提供你的html&amp; CSS。我将查看