【发布时间】:2016-12-13 13:36:21
【问题描述】:
我一直在尝试使用多种方法(例如 Javascript 中的 $.ajax)和使用此处找到的 jQuery 插件来实现此功能:http://jquery.malsup.com/form/
我已经搜索了 stackoverflow 和 google 的解决方案,但无济于事。
基本上,我要做的是制作一个切换开关(启用/禁用),单击该开关时,通过 AJAX 将结果发送到 PHP 脚本,而无需导航或重新加载页面。
准确地说是其中一个切换开关:http://www.bootstraptoggle.com/
下面我可以让它在复选框“切换”时运行 PHP 脚本,但它会导航到空白的 PHP 文件页面(我没有让 PHP 脚本在成功时执行任何操作)。
<html>
<head>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">window.jQuery || document.write('<script src="classes/commons/jquery/jquery-1.7.1.min.js"><\/script>')</script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
</head>
<body>
<form id="form" method="post" action="audio_alarm.php">
<input type="checkbox" name="toggle" id="toggle" data-toggle="toggle" data-off="Disabled" data-on="Enabled" checked>
</form>
<script>
$('#toggle').change(function(){
$('#form').submit();
});
</script>
</body>
</html>
现在下面是我认为应该确保它工作的内容,但 jQuery 插件似乎没有像宣传的那样工作.. 除非我做了一个简单的疏忽..
<html>
<head>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">window.jQuery || document.write('<script src="classes/commons/jquery/jquery-1.7.1.min.js"><\/script>')</script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
</head>
<body>
<form id="myForm" name="myForm" action="audio_alarm.php" method="post">
<input type="checkbox" name="toggle" id="toggle" data-toggle="toggle" data-off="Disabled" data-on="Enabled" checked>
</form>
<script>
$('#toggle').change(function(){
// submit the form
$(#myForm).ajaxSubmit();
// return false to prevent normal browser submit and page navigation
return false;
});
</script>
</body>
</html>
【问题讨论】:
-
您在更改事件中返回 false,而不是提交。看here
-
这似乎只在用户单击提交按钮时才有效,我没有使用提交按钮..
-
现在您的代码是正确的,但是您看不到任何更改,因为您在 jQuery 发布成功后没有事件处理程序。
-
PHP 脚本在我的数据库中输入了一个条目,所以当我使用第一个代码块时,它会生成条目,但是当使用 .ajaxSubmit 代码时,它不会输入条目..
标签: javascript jquery ajax twitter-bootstrap