当我调用 ajax 时,它会重新加载 window

When i call ajax it reloads the window

当我调用 ajax 提交表单数据时,它会重新加载 window。我该如何阻止它?

这是客户的注册码。我正在使用模态提交数据。 请给我一些解决这个问题的方法。

我的HTML

<form  id="newregister">
<div class="form_content clearfix">

    <div class="form-group">
        <label for="firstname">First Name</label>
        <input type="text" class="form-control" " id="firstname_page" name="firstname_page" required>
    </div>

    <div class="form-group">
        <label for="lastname">Last Name</label>
        <input type="text" class="form-control" " id="lastname_page" name="lastname_page"  required>
    </div>
    <div class="form-group">
        <label for="compnay_name">Company Name</label>
        <input type="text" class="form-control" id="compnay_name" name="compnay_name"   required>
    </div>
    <div class="form-group">
        <label for="country_name">Country Name</label>
        <input type="text" class="form-control" id="country_name" name="country_name"   required>
    </div>
    <div class="form-group">
        <label for="email_create">Email address</label>
        <input type="text" class="form-control" id="email_create" required name="email_address_page" >
    </div>
    <div class="form-group">
        <label for="phone_no">Phone No</label>
        <input type="number" class="form-control" id="phone_no"  required name="phone_no" >
    </div>

    <div class="form-group">
        <label for="passwd">Password</label>
        <input class="form-control" type="password"  id="password_page" name="password_page" >
    </div>

    <div class="form-group">

        <button class="btn btn-default button button-medium exclusive" id="SubmitCreates" onclick="newRegister()"> <span>
            <i class="icon-user left"></i>Create an account </span>
        </button>
    </div>
</div>
</form>

我的Javascript

function newRegister()
{
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        url:'{{ route('web.new.register') }}',
        data:$("#newregister").serialize(),
        type:'post',
        success:function(response)
        {
            alert(response);
        }
    });
}

我的控制器

public function newregister(Request $request)
{
    return response()->json('true');
}

我也用过这个jquery方法

我的HTML

<div class="form-group">
    <button class="btn btn-default button button-medium exclusive" type="submit" id="SubmitCreate" onclick="DoLogin()"> <span>
        <i class="icon-user left"></i>Login </span>
    </button>
</div>

我的Jquery

$(document).ready(function(){
    $('#SubmitCreates').on('click', function(){
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            url:'{{ route('web.new.register') }}',
            data:$("#newregister").serialize(),
            type:'post',
            success:function(response)
            {
                alert(response);
                return false;
            }
        });
    });
});

但这也不起作用。 请给我一些提示或解决方案来解决这个问题。

您需要防止默认按钮行为: https://developer.mozilla.org/ru/docs/Web/API/Event/preventDefault

function newRegister(clickEvent)
{
    clickEvent.preventDefault();

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        url:'{{ route('web.new.register') }}',
        data:$("#newregister").serialize(),
        type:'post',
        success:function(response)
        {
            alert(response);
        }
    });
}

该按钮可能会触发表单的提交事件,该事件默认加载页面。您可以通过指定表单元素来覆盖它:

<form onsubmit="return false">

只需使用事件阻止默认方法

$(document).ready(function(event){
event.preventDefault();
$('#SubmitCreates').on('click', function(){
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        url:'{{ route('web.new.register') }}',
        data:$("#newregister").serialize(),
        type:'post',
        success:function(response)
        {
            alert(response);
            return false;
        }
    });
});

});