最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

不能同时使用AJAX POST和jQuery动画(使用自举)

IT培训 admin 5浏览 0评论

不能同时使用AJAX POST和jQuery动画(使用自举)

我使用的是有一个侧边栏Bootstrap Template,当用户点击.nav-menu(或公司名称中的模板),侧边栏隐藏/取消隐藏。

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');
         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden');  
         }
    });
});

上面的代码工作正常。

问题是当我尝试包括AJAX后如下图所示:

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'0'}
              });


         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden'); 

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'1'}
              });

         }
    });
});

我加this在我的公开/ JS文件夹,并添加了以下到页脚:

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>

现在AJAX POST正常工作(除非我必须双击.nav-menu),但显示/隐藏动画不能正常工作!

代码的这$('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);部分根本不能工作!

这是在Chrome控制台中的错误(有这些7270):

jquery-3.3.1.js:6710 Uncaught TypeError: jQuery.easing[this.easing] is not a function
    at init.run (jquery-3.3.1.js:6710)
    at tick (jquery-3.3.1.js:7094)
    at Function.jQuery.fx.tick (jquery-3.3.1.js:7436)
    at schedule (jquery-3.3.1.js:6813)

不知道这是相关的,但是这是整个页脚:

//bootstrap required
<script src=".9.0/feather.min.js"></script>
<script src=".js/2.7.3/Chart.min.js"></script>
<script src=".3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src=".js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src=".2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
//bootstrap required

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script src="js/dashboard.js"></script>
<script src="js/jquery.js"></script>
</body>
</html>
回答如下:

所述jQuery hide() documentation显示隐藏的与3个参数的签名是隐藏(持续时间,缓解,完整),其中缓解和完整的功能。你逝去的三个参数。第一个是只是一个后备的jQuery但第二个处理,缓解,期待一个功能,你传递的对象。

也许它只是似乎添加AJAX代码之前工作。也许你得到错误,那么太多,但他们并没有从运行停止额外的代码。

不能同时使用AJAX POST和jQuery动画(使用自举)

我使用的是有一个侧边栏Bootstrap Template,当用户点击.nav-menu(或公司名称中的模板),侧边栏隐藏/取消隐藏。

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');
         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden');  
         }
    });
});

上面的代码工作正常。

问题是当我尝试包括AJAX后如下图所示:

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'0'}
              });


         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden'); 

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'1'}
              });

         }
    });
});

我加this在我的公开/ JS文件夹,并添加了以下到页脚:

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>

现在AJAX POST正常工作(除非我必须双击.nav-menu),但显示/隐藏动画不能正常工作!

代码的这$('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);部分根本不能工作!

这是在Chrome控制台中的错误(有这些7270):

jquery-3.3.1.js:6710 Uncaught TypeError: jQuery.easing[this.easing] is not a function
    at init.run (jquery-3.3.1.js:6710)
    at tick (jquery-3.3.1.js:7094)
    at Function.jQuery.fx.tick (jquery-3.3.1.js:7436)
    at schedule (jquery-3.3.1.js:6813)

不知道这是相关的,但是这是整个页脚:

//bootstrap required
<script src=".9.0/feather.min.js"></script>
<script src=".js/2.7.3/Chart.min.js"></script>
<script src=".3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src=".js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src=".2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
//bootstrap required

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script src="js/dashboard.js"></script>
<script src="js/jquery.js"></script>
</body>
</html>
回答如下:

所述jQuery hide() documentation显示隐藏的与3个参数的签名是隐藏(持续时间,缓解,完整),其中缓解和完整的功能。你逝去的三个参数。第一个是只是一个后备的jQuery但第二个处理,缓解,期待一个功能,你传递的对象。

也许它只是似乎添加AJAX代码之前工作。也许你得到错误,那么太多,但他们并没有从运行停止额外的代码。

发布评论

评论列表 (0)

  1. 暂无评论