我正在为我的邮件系统构建推送通知,并且有一个奇怪的错误。
我正在使用ajax来获取最近的消息。在我的PHP脚本中,我有一个while循环,我在其中查看结果。因此,每个<li>
都是“最近的消息”。
在我看来,这很简单。我在<li>
中放了一个ajax函数,当它遍历while循环时,它将发送从迭代接收的值。下面是我的PHP脚本。
$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>
";
例如,在我的getIMNotification.php
中,如果我只是回显从我的AJAX发送的user2
值,它将为每个结果回显相同的值。但是,因为它在while循环中,它不应该每次迭代都会收到新的值吗?
是否因为被调用函数?被回显的一个值是循环中的最后一个 id
。关于它为什么这样做的任何逻辑?
答案 0 :(得分:3)
您不应该在循环中重新定义该函数。您应该定义一次函数,并将ID作为参数。然后,您可以为每个LI
分别调用它。
您还需要将结果放在该邮件的特定DIV中。 .imNotification
选择该类的所有DIV。您可以在DIV的ID中使用$id
来定位每个ID。
该功能不需要来自AJAX,您可以将其放在原始HTML中:
function getIMNotification(id, target) {
$.ajax({
url: 'getIMNotification.php',
method: 'POST',
data: {
user2: id
},
success: function(data) {
$('#' + target).html(data);
}
});
}
然后PHP将是:
$output .= "
<li>
<img src='$profilephoto' class='rm_pp' alt=''>
<div class='imNotification' id='imNotification-$id'>
<script>
getIMNotification('$id', 'imNotification-$id');
</script>
</div>
</li>
";