【发布时间】:2018-06-05 08:56:53
【问题描述】:
我正在为我的消息系统构建推送通知并且有一个奇怪的错误。
我正在使用 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。关于它为什么这样做的任何逻辑?
【问题讨论】:
-
一个函数只能有一个定义。如果在循环中定义函数,则只会在调用函数时获得最后一个版本。
-
@Barmar Tru,但是,他马上就给它打电话,所以这几乎不是问题。它也可能不是一个函数。
-
$('.imNotification').html(data);当然会更新所有.imNotification元素,而不仅仅是脚本标签附近的元素。 -
啊,我是这么想的。首先使用该功能的原因是,当他们单击图像时,我打开聊天并 setTimeout(theFunction, 0) 使其重置
-
你需要一个 ajax 函数,而不是一大堆循环。您需要一个使用
$(this)的事件,通过仅激活一个getIMNotification()函数来作用于当前元素。您想将this或$(this)输入到函数中。