【问题标题】:Retrieving Data with jQuery AJAX Without Reloading Page使用 jQuery AJAX 检索数据而不重新加载页面
【发布时间】: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


【解决方案1】:

请不要使用提交,而是使用更改功能

<script type="text/javascript">
$(document).ready(function() {
    $('form').on('change', function() {
        $.ajax({
            url: 'form.php',
            type: 'post',
            data: {'id':jQuery('select[name=id]').val()},
            success:function(data) { $('form').html(data); }
        });
    });
});
</script>

【讨论】:

  • 你为什么会提出这个建议?为什么手动生成数据而不是使用serialize() ...似乎是倒退了一步?
  • 这正是我要找的 Rahul,谢谢!!!!现在,页面根本不会重新加载,它是异步完成的。 B-)
猜你喜欢
  • 2016-02-23
  • 2014-09-06
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
相关资源
最近更新 更多