ajax正在加载页面以返回POST请求

时间:2015-10-13 11:44:18

标签: javascript php jquery ajax

当我通过ajax发出“POST”请求时,页面在返回请求时加载。

我们不是要使用ajax来阻止整个页面重新加载吗?

这是我的HTML代码:

<form method="post">
<div align="center" class="col-md-10">
    <input  type="text" id= "input" name="input" >
 </div><
 <div class="form-group">
    <button type="submit" class="btn btn-default" id="search">
     Search
    </button>
  </div>
  </form>

这是我的ajax请求:

<script>
    $(document).ready(function () {
    $(".search").on('click', function () {
            var data = {};
            data['input'] = $('#input').val();
            // Submit data via AJAX§
            $.ajax({
            url: '/home',
                    type: 'post',
                    data: data,
                    success: function (data) {
                    }
            });
    });
    });
</script>

有谁知道如何解决这个问题以及我做错了什么!!!

6 个答案:

答案 0 :(得分:6)

我认为,你有search作为id不是类。它根本不叫阿贾克斯。 它正在提交,因为它是一个submit按钮,因此请更改您的代码,

注意: .search无效,

$("#search").on('click', function (e) {
    e.preventDefault();
    var data = {};
    data['input'] = $('#input').val();
        // Submit data via AJAX
    $.ajax({
        url: '/home',
        type: 'post',
        data: data,
        success: function (data) {

        }
    });
});

e.preventDefault()用于阻止提交按钮的默认行为(默认情况下,点击提交按钮会重新加载页面。)详情了解e.preventDefault()here或{{3 }}

答案 1 :(得分:3)

你正在使用Id并选择错误的类。

使用

$("#search").on('click', function (e) {

而不是

$(".search").on('click', function (e) {

所以最终的JS将是

<script>
$(document).ready(function () {
    $("#search").on('click', function (e) {
        e.preventDefault();
        e.stopPropagation();
        var data = {};
        data['input'] = $('#input').val();
        // Submit data via AJAX§
        $.ajax({
        url: '/home',
                type: 'post',
                data: data,
                success: function (data) {
                }
        });
    });
});

答案 2 :(得分:1)

您的代码确定 您只需将preventDefault()添加到click函数,然后从.search更改为#search,即..

<script>
    $(document).ready(function () {
    $("#search").on('click', function (e) {
            e.preventDefault();
            var data = {};
            data['input'] = $('#input').val();
            // Submit data via AJAX§
            $.ajax({
            url: '/home',
                    type: 'post',
                    data: data,
                    success: function (data) {
                    }
            });
    });
    });
</script>

event.preventDefault()

  

此方法不接受任何参数。   例如,单击的锚点不会将浏览器带到新的URL。   我们可以使用event.isDefaultPrevented()来确定此方法是否具有   由此事件触发的事件处理程序调用

答案 3 :(得分:0)

如果您需要在没有页面加载的情况下提交表单,则需要阻止按钮的默认行为:

$(your_button).on('click', function (ev) {
    ev.preventDefault();
    // do stuff here
});

答案 4 :(得分:-1)

您必须在onclick事件处理程序中返回false才能停止提交表单:

$(".search").on('click', function () {
    var data = {};
    data['input'] = $('#input').val();
    // Submit data via AJAX§
    $.ajax({
        url: '/home',
        type: 'post',
        data: data,
        success: function (data) {
        }
    });

    return false;
});

请同时查看此内容以获取有关difference between return false; and e.preventDefault();

的更多信息

答案 5 :(得分:-1)

使用type =“button”而不是提交。 “提交”按钮将按原样提交表单。