不能同时使用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代码之前工作。也许你得到错误,那么太多,但他们并没有从运行停止额外的代码。