Javascript 为什么通过Ajax jQuery发送数据失败
我试图用Ajax jQuery创建一个弹出式表单登录,但它总是无法发送数据。我在网上有很多方法可以找到,但没有任何改变。请看一看,帮帮我。非常感谢: 这是我的表格:Javascript 为什么通过Ajax jQuery发送数据失败,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我试图用Ajax jQuery创建一个弹出式表单登录,但它总是无法发送数据。我在网上有很多方法可以找到,但没有任何改变。请看一看,帮帮我。非常感谢: 这是我的表格: <form id="loginform" name="loginform" method="POST"> {{ csrf_field() }} <div class='modal-body-left' > <div class="form-group">
<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>
这是控制器:
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令牌,以便Laravel处理请求。有几种方法可以做到这一点-尝试以下方法: 表格:
现在,您应该能够使用
$request->all()
访问控制器中提交的数据,具体以何种方式失败?调试时,实际问题何时发生?发生这种情况时的相关值是什么?对不起,我不知道。当我试图通过在Postman中发送消息来发现问题时,我在VerifyCsrfToken.php第68行中得到了这个令牌失配异常,但我不知道它是什么。我认为数据无法发送到控制器,因为我在控制器上尝试了一些测试代码,但没有成功1{csrf\u field()}
生成
,因此必须在$.ajax方法中的数据中传递\u令牌
。2.您可以在jquery$.ajaxSetup({headers:{'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]')).attr('content')})中设置请求头
您必须在app.blade.php文件中添加
。您似乎对@jackel414有相同的答案,但仍然失败。有什么原因吗?配置和其他什么?谢谢你的时间谢谢你的时间,但还是失败了。有什么原因吗?是的,对不起,我忘了标题的名字。它应该是标题:{'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]”)。attr('content')}
。我更新了我的答案。这应该可以解决问题。它仍然不起作用,我认为还有比这更重要的东西,我不知道它是否与这种形式和功能有关。我现在很困惑。我是个新手,找不到任何解决办法(您收到的错误是什么?另外,我保留了大部分代码,但我建议只将url
参数设置为静态值(例如url:'/loginHandling'
)。
Route::post('/loginHandling',['as'=>'loginHandling','uses'=>'LoginController@loginHandling']);
<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>
$("#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");
});
});