首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery + Ajax不能正常工作,为什么?

Jquery + Ajax不能正常工作,为什么?
EN

Stack Overflow用户
提问于 2018-11-30 06:32:30
回答 2查看 1.5K关注 0票数 0

当有带有unread =的行时,这段代码将显示一个计数器,当用户单击a图标<i class="fas fa-bell"></i>时,它将将该行显示为<i class="fas fa-bell"></i>=<i class="fas fa-bell"></i>

问题是:这是不正常的,当我单击<i class="fas fa-bell"></i>时,它会得到3-9秒的延迟来将计数器更新为0,它会立即更新我的表,只更新延迟的计数器,但是有时我需要重新加载页面并单击图标来更新我的表,为什么?怎么了?

html:<span class="text-white divCountNT" id="datacount"></span>

剧本:

代码语言:javascript
复制
<script>
  $(document).ready(function(){

    $("#datacount").load("select.php");

    setInterval(function(){
    $("#datacount").load('select.php')
    }, 10000);

  });

  $(document).on('click', '.fa-bell', function (){

    $.ajax({
       type: "POST",
       url: "update.php"
    });

  });
</script>

select.php:

代码语言:javascript
复制
<?php
require_once 'db.php';

if(!isset($_SESSION))session_start();

if(isset($_SESSION['user_id'])) {
  $user_id = $_SESSION['user_id'];
}

$status = 'unread';
$sql = $conn->prepare("SELECT * FROM noti WHERE status = :status AND user_id = :user_id");
$sql->bindParam(':user_id', $user_id, PDO::PARAM_INT);
$sql->bindParam(':status', $status, PDO::PARAM_STR);
$sql->execute();
$countNT = $sql->rowCount();

if($countNT >= 1){
echo $countNT;
}

?>

update.php:

代码语言:javascript
复制
<?php
require_once 'db.php';

if(!isset($_SESSION))session_start();

if(isset($_SESSION['user_id'])) {
  $user_id = $_SESSION['user_id'];
}

$status = 'read';
$sql = $conn->prepare("UPDATE noti SET status = :status WHERE user_id = :user_id");
$sql->bindParam(':user_id', $user_id, PDO::PARAM_INT);
$sql->bindParam(':status', $status, PDO::PARAM_STR);
$sql->execute();
$countNT = $sql->rowCount();

echo $countNT;

?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-30 07:01:17

您没有ajax调用的回调函数,因此您的表只使用load函数更新自己。ajax调用应该类似于这样:

代码语言:javascript
复制
$.ajax({
   type: "POST",
   url: "update.php"
}).done(function() {
   window.location.reload(true);
});
票数 3
EN

Stack Overflow用户

发布于 2018-11-30 07:27:12

你可以试试这段代码,它运行得很好

代码语言:javascript
复制
$.ajax({
   type: "POST",
   url: "update.php"
   success: function(result){
        $(body).find("#loadData").html(result);
       // $(body).find("#loadData").append(result); //you can also use for append data insted of replace
   }
   error: function(xhr){
        alert("An error occured: " + xhr.status + " " + xhr.statusText);
   }
});

请检查这是否使用了更多的AJAX ajax.asp方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53552437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档