【发布时间】:2015-03-23 06:48:34
【问题描述】:
我有这个从 MySQL 数据库中检索数据的 jQuery AJAX 代码。它无需重新加载页面即可工作,问题是它只能在第一次工作。如果我再次提交表单,则会重新加载整个页面。我怎样才能做到这一点,以便我可以多次提交表单并检索数据而无需重新加载页面?
jQuery
>$(document).ready(function() {
$('form').on('change', function() {
$(this).closest('form').submit();
});
$('form').on('submit', function(event) {
event.preventDefault();
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
success:function(data) { $('form').html(data); }
});
});
});
HTML
<form action="form.php" method="post" id="cars">
<select name="id">
<option value="">Selection...</option>
<option value="1" <?php echo (isset($id) and $id == 1) ? 'selected' : '';?>>Chevy</option>
<option value="2" <?php echo (isset($id) and $id == 2) ? 'selected' : '';?>>Ford</option>
<option value="3" <?php echo (isset($id) and $id == 3) ? 'selected' : '';?>>Dodge</option>
</select>
</form>
【问题讨论】:
-
成功返回了什么?您是否在其内部嵌套了相同的表单?
-
来自数据库的 id、数据和文本。我做错了嵌套吗?如果是,我该如何解决?当我第一次提交表单时它可以工作,然后第二次它没有,第三次它工作,第四次它没有,等等。
-
它的工作周期是在页面重新加载之后。我不明白,因为您显示在 ajax 成功时替换表单的内部 html。那么怎么才能再次提交呢?
-
有什么办法可以阻止它重新加载?
-
我不知道为什么会这样。只要没有抛出脚本错误(检查控制台),它就不应该。仍然对
$('form').html(data);感到困惑这将替换所有表单控件...但是您说您只是返回了非 html 数据
标签: jquery ajax forms submit reload