【问题标题】:AJAX JQuery form submit only works once( requires page refresh)AJAX JQuery 表单提交只能工作一次(需要刷新页面)
【发布时间】:2016-07-26 18:24:24
【问题描述】:

当页面加载时,我可以检索一个结果,但是当我更改输入并尝试重新填充 update_form 时,我什么也没有收到。有任何想法吗?当我检查参数时,浏览器正在接收新参数,但显然查询不会再次运行。

$(function() { 
                $("#select_form").submit(function (e) {
                    e.preventDefault();
                    $.ajax({
                        url: 'select_price.php',
                        data: $('#select_form').serialize(),
                        type: 'POST',
                        success: function (data) {
                            console.log(data);

                            if(data){
                                $("#update_form").html(data);
                                $("#norecord").css('display','none');

                            }
                           else{
                                $("#norecord").css('display','block');

                            }

                        },


                    });

                });
                });

我的 HTML

 <form action="" method="post" id="select_form"><select style="max-width: 125px;border-radius:5px;" class="form-control" name="cus_no" autocomplete="off">
                <?php

                $sql = "SELECT DISTINCT debcode FROM cicmpy WHERE cicmpy.region IS NOT NULL";
                $query = odbc_exec($conn, $sql);
                while ($row = odbc_fetch_array($query)) {
                    echo '<option value="' . ($row['debcode']) . '">' .($row['debcode']) . ' </option>';
                }


                ?>

                </select ></div><label>Item Number</label><input style="max-width: 125px; border-radius:5px;" type="text" class="form-control" id="auto_item" name="item_no"/>
                        <button style="margin-top: 15px;" type="submit" name="update" class="btn btn-primary">Manage</button>
                        <button style="margin-top: 15px;" type="button" name="new_price" id="new_price" class="btn btn-success pull-right">New Price</button></div>
        </div> </div>
                   </div>
        </div>
            </form>

【问题讨论】:

  • 你能展示更多的 HTML(整个表单)吗?
  • @pmahomme 奇怪的是它没有出现。固定。

标签: javascript jquery ajax ajaxform


【解决方案1】:

首先,在您的 HTML 中,给您的按钮一个 id="btn_manage" 并删除 type="submit",否则您只是发布表单(这就是您的页面刷新的原因)而不是使用 AJAX。在您的 Javascript 中,去掉 $("#select_form").submit(function (e) { 的东西,只需为按钮本身注册一个事件处理程序,它将运行 AJAX。

更新 HTML,然后试试这个:

<script>
    $(function() {
        $("#btn_manage").on("click", function () {
            $.ajax({
                url: 'select_price.php',
                data: $('#select_form').serialize(),
                type: 'POST',
                success: function (data) {
                    console.log(data);

                    if(data){
                        $("#update_form").html(data);
                        $("#norecord").css('display','none');

                    } else {
                        $("#norecord").css('display','block');

                    }

                },
                error: function(data) {
                    console.log("Error: " + data)
                }
            });
        });
    });

    </script>

【讨论】:

  • 这很好用。这也修复了我遇到的一个表单问题上的两个按钮。
【解决方案2】:

您需要为提交按钮绑定一个单击事件处理程序,以这种方式添加到未来的 ajax 请求中。

$(function() {
  $("#select_form").submit(function(e) {
    e.preventDefault();
    $.ajax({
      url: 'select_price.php',
      data: $('#select_form').serialize(),
      type: 'POST',
      success: function(data) {
        console.log(data);

        if (data) {
          $("#update_form").html(data);
          $("#norecord").css('display', 'none');

        } else {
          $("#norecord").css('display', 'block');

        }

      },


    });

  });

    //Bind click event listener to the submit button
    $(document).on('click', 'button[type="submit"]', function() {
      $(this).parents('form').submit();
    });
});

【讨论】:

  • 你能说得更详细些吗?这正是它的样子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多