Javascript jQuery Ajax方法并不总是有效

时间:2016-02-23 14:03:51

标签: javascript jquery ajax

我正在开发一个聊天应用程序,发现了一个我无法解决的错误,我被卡住了:/

基本上:我有两个不同的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+'\')">&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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+'\')">&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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;
    }
  }
}

怎么可能,不是不可能的?

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。我将查看