Laravel 5 Ajax 中的 X-CSRF-TOKEN 500(内部服务器错误)
Laravel 5 X-CSRF-TOKEN 500 (Internal Server Error) in Ajax
您好,我已经使用 Ajax 更改密码(这是代码的简短版本):
var password = document.querySelector('[name="password"]').value;
action = 'http://localhost:8012/market2/market2/public/account/query/';
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
}
xmlhttp.open("post",action + password, true);
xmlhttp.setRequestHeader("X-CSRF-TOKEN", document.getElementById('token-csrf').value);
xmlhttp.onreadystatechange=function() {
if (this.readyState == 4 && this.status == 200) {
if (this.responseText == "false") {
document.getElementById("error_password").innerHTML = "You actually password is wrong!";
return false;
} else {
document.getElementById("error_password").innerHTML = "OK";
return true;
}
}
}
xmlhttp.send();
}
还有我的 csrf-token:
<input type="hidden" name="_token" id="token-csrf" value="{{ csrf_token() }}">
我不知道我是否正确地将参数 X-CSRF-TOKEN
添加到我的脚本中。首先我有错误 ajax 419 (unknown status)
,所以我添加了 X-CSRF-TOKEN
,现在我有错误 500 (Internal Server Error)
。我也试过这个: Laravel 5.5 ajax call 419 (unknown status)
编辑Post:
是不是我的查询方式:
public function queryPass($pass) {
$user = Auth::user();
$current_password = $user->password;
if(Hash::check($pass, $current_password)) {
$updatePassword = App\User::where('id', $user->id)->update(['password' => bcrypt($pass)]);
echo "true";
} else {
echo "false";
die;
}
}
和路线:
Route::get('account/query/{pass?}', 'UsersController@queryPass');
第一个问题是他在控制器的顶部错过了 use Illuminate\Support\Facades\Hash;
,他使用了 use Hash;
,第二个问题是我们解决了这个问题,他正在 returning 一个布尔值从控制器内部,当他应该 return 实现 __toString
方法或字符串的对象时,他 return 在这种情况下给出了正确的响应字符串 "true"和 "false"
您好,我已经使用 Ajax 更改密码(这是代码的简短版本):
var password = document.querySelector('[name="password"]').value;
action = 'http://localhost:8012/market2/market2/public/account/query/';
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
}
xmlhttp.open("post",action + password, true);
xmlhttp.setRequestHeader("X-CSRF-TOKEN", document.getElementById('token-csrf').value);
xmlhttp.onreadystatechange=function() {
if (this.readyState == 4 && this.status == 200) {
if (this.responseText == "false") {
document.getElementById("error_password").innerHTML = "You actually password is wrong!";
return false;
} else {
document.getElementById("error_password").innerHTML = "OK";
return true;
}
}
}
xmlhttp.send();
}
还有我的 csrf-token:
<input type="hidden" name="_token" id="token-csrf" value="{{ csrf_token() }}">
我不知道我是否正确地将参数 X-CSRF-TOKEN
添加到我的脚本中。首先我有错误 ajax 419 (unknown status)
,所以我添加了 X-CSRF-TOKEN
,现在我有错误 500 (Internal Server Error)
。我也试过这个: Laravel 5.5 ajax call 419 (unknown status)
编辑Post:
是不是我的查询方式:
public function queryPass($pass) {
$user = Auth::user();
$current_password = $user->password;
if(Hash::check($pass, $current_password)) {
$updatePassword = App\User::where('id', $user->id)->update(['password' => bcrypt($pass)]);
echo "true";
} else {
echo "false";
die;
}
}
和路线:
Route::get('account/query/{pass?}', 'UsersController@queryPass');
第一个问题是他在控制器的顶部错过了 use Illuminate\Support\Facades\Hash;
,他使用了 use Hash;
,第二个问题是我们解决了这个问题,他正在 returning 一个布尔值从控制器内部,当他应该 return 实现 __toString
方法或字符串的对象时,他 return 在这种情况下给出了正确的响应字符串 "true"和 "false"