Ich baue Push-Benachrichtigungen für mein Messaging-System und habe einen seltsamen Bug.Ajax in while-Schleife
Ich verwende eine Ajax, um die letzten Nachrichten zu erhalten. In meinem PHP-Skript habe ich eine while-Schleife, in der ich meine Ergebnisse durchlaufe. Also jede <li>
ist eine "letzte Nachricht".
In meinen Gedanken wäre es einfach. Ich lege eine Ajax-Funktion in die <li>
und während es durch die While-Schleife iteriert wird es die Werte aus der Iteration erhalten gesendet. Unten ist mein PHP-Skript.
$output .= "
<li>
<img src='$profilephoto' class='rm_pp' alt=''>
<div class='imNotification'>
<script>
function getIMNotification() {
$.ajax({
url: 'getIMNotification.php',
method: 'POST',
data:{user2:'$id'},
success:function(data) {
$('.imNotification').html(data);
}
});
}
getIMNotification();
</script>
</div>
</li>
";
Zum Beispiel in meinem getIMNotification.php
wenn i echo nur den user2
Wert von meinem AJAX gesendet, wird es den gleichen Wert für jedes Ergebnis Echo. Aber, da es in der While-Schleife ist, sollte es nicht jede Iteration neue Werte erhalten?
Liegt es daran, dass die Funktion aufgerufen wird? Der eine Wert, der wiederholt wird, ist der letzteid
in der Schleife. Irgendeine Logik, warum es das macht?
Eine Funktion nur eine haben kann Definition. Wenn Sie die Funktion in einer Schleife definieren, erhalten Sie nur die letzte Version, wenn die Funktion aufgerufen wird. – Barmar
@Barmar Tru, aber er ruft es sofort an, also ist das kaum ein Problem. Es könnte genauso gut keine Funktion sein. –
'$ ('. ImNotification') .html (Daten);' aktualisiert natürlich ALLE '.imNotification' Elemente, nicht nur das in der Nähe des Skript-Tags. –