javascript - 为什么通过 Ajax jQuery 发送数据失败

标签 javascript php jquery ajax laravel

我正在尝试使用 Ajax jQuery 创建一个弹出式表单登录,但它总是无法发送数据。我在 Internet 上有很多方法可以找到,但没有任何改变。请看看并帮助我。非常感谢: 这是我的表格:

<form id="loginform" name="loginform" method="POST">
    {{ csrf_field() }}
    <div class='modal-body-left' >
        <div class="form-group">
            <input type="text" id="username" name="username" placeholder="Tên đăng nhập" value="" class="form-control login-field">
            <i class="fa fa-user login-field-icon"></i>
        </div>
        <div class="form-group">
            <input type="password" id="password" name="password" placeholder="Mật khẩu" value="" class="form-control login-field">
            <i class="fa fa-lock login-field-icon"></i>
        </div>
        <div class="checkbox">
            <label>
                <input type="checkbox" style="margin-top: -8px"> Nhớ mật khẩu
            </label>
            <a href="#" style="float: right;">Quên mật khẩu?</a>
        </div>
        <button class="btn btn-success modal-login-btn" id="loginbutton" name="loginbutton"  style="background-color: #47a49a; background: #fec10f;" type="submit">Đăng nhập</button>
    </div>
</form>

这是我的js:

$("#loginbutton").click(function(event) {
    event.preventDefault();
    var username = $("#username").val();
    var password = $("#password").val();
    var data ={"email":username, "password":password};
    alert(data.email);
    // alert(data.password);
    $.ajax(
        {
            url: '{{url('/')}}/loginHandling',
            type: 'POST',
            data: {'email': "ruoitrau95@gmail.com", 'password':"tuyen12345"},
            dataType: 'json',
            success: function(data)
            {
                alert(data);
                alert("done");
            }   
        }
    )
    .fail(function(data) {
        alert("fail");
    }); 
});

这是 Controller :

public function loginHandling() {

    $email = Input::get('email');
    $password = Input::get('password');
    $check $this->pages->checkLogin($email, $password);
    echo "alert(In loginHandling)";
    if ($check) {
        $name = $this->pages->getNameFromMail($email);
        Session::put('logined', true);
        Session::put('email', $email);
        Session::put('name', $name);

        die json_encode(array("success"=>"true"));
    } else {
        die json_encode(array("success"=>"false"));
    }

}

我正在使用 Laravel 框架,所以我的 url 已定义:

Route::post('/loginHandling',['as'=>'loginHandling','uses'=>'LoginController@loginHandling']);

再次感谢您的宝贵时间

最佳答案

您需要传递 CSRF token 以便 Laravel 处理请求。有几种方法可以做到这一点 - 试试这个:

表格:

<meta name="_token" content="{{ csrf_token() }}" />            
<form id="loginform" name="loginform" method="POST">
    <div class='modal-body-left' >
        <div class="form-group">
            <input type="text" id="username" name="username" placeholder="Tên đăng nhập" value="" class="form-control login-field">
            <i class="fa fa-user login-field-icon"></i>
        </div>
        <div class="form-group">
            <input type="password" id="password" name="password" placeholder="Mật khẩu" value="" class="form-control login-field">
            <i class="fa fa-lock login-field-icon"></i>
        </div>
        <div class="checkbox">
            <label>
                <input type="checkbox" style="margin-top: -8px"> Nhớ mật khẩu
            </label>
            <a href="#" style="float: right;">Quên mật khẩu?</a>
        </div>
        <button class="btn btn-success modal-login-btn" id="loginbutton" name="loginbutton"  style="background-color: #47a49a; background: #fec10f;" type="submit">Đăng nhập</button>
    </div>
</form>

Javascript:

$("#loginbutton").click(function(event) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
        }
    });
    event.preventDefault();
    var username = $("#username").val();
    var password = $("#password").val();
    $.ajax(
        {
            url: '{{url('/')}}/loginHandling',
            type: 'POST',
            data: {'email': username, 'password': password},
            dataType: 'json',
            success: function(data)
            {
                alert(data);
                alert("done");
            }   
        }
    )
    .fail(function(data) {
        alert("fail");
    }); 
});

您现在应该能够使用 $request->all() 访问 Controller 中提交的数据。

关于javascript - 为什么通过 Ajax jQuery 发送数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043853/

相关文章:

javascript - 在 Javascript `Component` IF/ELSE 语句内隐藏 `<Canvas>` 图像

javascript - 缩放 d3 v4 map 以适合 SVG(或完全适合)

javascript - 如何使用 FileReader javascript 读取 XML 文件?

php - 用php加密动态 "add to cart"paypal按钮的问题

php - 需要在单个资源 Controller 中使用 Entrust 角色的建议 - Laravel5

javascript - popstate - 需要在后退按钮上点击两次才能真正返回

javascript - Python 中的原型(prototype)编程

php - 动态创建单元格时如何设置单元格的填充颜色? TCPDF

jquery - 避免使用 jQuery 突出显示所有行和列

javascript - 使滚动上的 <path> 变为虚线