Ajax 如何在Laravel 5.4中发布数据控制器?
我无法将数据发布到控制器,我的ajax调用是否有问题?我的web.php设置,或者控制器没有设置,我得到的错误是。提醒:这是本地运行的laravel 5.4 POST 500(内部服务器错误) JS web.phpAjax 如何在Laravel 5.4中发布数据控制器?,ajax,laravel,controller,laravel-5.4,Ajax,Laravel,Controller,Laravel 5.4,我无法将数据发布到控制器,我的ajax调用是否有问题?我的web.php设置,或者控制器没有设置,我得到的错误是。提醒:这是本地运行的laravel 5.4 POST 500(内部服务器错误) JS web.php Route::post('change-rank', 'RankController@changeRank'); RankController.php namespace App\Http\Controllers; use App\Rank; use Illuminate\Htt
Route::post('change-rank', 'RankController@changeRank');
RankController.php
namespace App\Http\Controllers;
use App\Rank;
use Illuminate\Http\Request;
class RankController extends Controller
{
public function changeRank()
{
info("hi");
}
}
更改JS代码,如下所示:
$('.rank-select').change(function(){
var id = $(this).val();
var memberId = $(this).closest('.irmember').attr('id');
console.log(id);
console.log(memberId);
$.ajax({
type: "POST",
url: 'change-rank',
data: {id:id, memberId:memberId},
success: function( msg ) {
console.log(msg);
}
});
});
更改JS代码,如下所示:
$('.rank-select').change(function(){
var id = $(this).val();
var memberId = $(this).closest('.irmember').attr('id');
console.log(id);
console.log(memberId);
$.ajax({
type: "POST",
url: 'change-rank',
data: {id:id, memberId:memberId},
success: function( msg ) {
console.log(msg);
}
});
});
它对ajax参数的简单更改应该可以正常工作
$('.rank-select').change(function(){
var id = $(this).val();
var memberId = $(this).closest('.irmember').attr('id');
console.log(id);
console.log(memberId);
$.ajax({
type: "POST",
url: 'change-rank',
data: {id:id, memberId:memberId},
success: function( data) {
console.log(data);
}
});
});
控制器文件是
public function changeRank(Request $request)
{
return $request->all();
}
它对ajax参数的简单更改应该可以正常工作
$('.rank-select').change(function(){
var id = $(this).val();
var memberId = $(this).closest('.irmember').attr('id');
console.log(id);
console.log(memberId);
$.ajax({
type: "POST",
url: 'change-rank',
data: {id:id, memberId:memberId},
success: function( data) {
console.log(data);
}
});
});
控制器文件是
public function changeRank(Request $request)
{
return $request->all();
}
您显示的JS代码不包含CSRF令牌,这肯定会引发500服务器错误。在AJAX调用中包含CSRF令牌有不同的方法,下面是一个示例 以您的形式:
<form>
{{ csrf_token() }}
....
var token = $('input[name="_token"]');
....
$.ajax({
data: {_token: token, id: id, memberId: memberId},
...
有,还有拉威尔医生
顺便说一句,500服务器错误
只是一个一般性错误,告诉您,有一个服务器错误。如果要解决这个问题,您确实需要知道错误是什么——您应该能够在laravel和webserver(Apache/nginx/etc)日志中看到这一点。您的日志可能会显示类似“CSRF令牌失配异常”的内容,这可能会直接引导您找到答案!:-)
编辑
我刚刚注意到您的Javascript中有一个输入错误,我最初将其复制到了我的答案中。这可能只是一个输入错误,而不是在您的真实代码中,因为它可能会抛出JS错误,而不是运行并生成服务器错误
data: {_token: token, id: id, memberId, memberId},
应该是:
data: {_token: token, id: id, memberId: memberId},
(memberId后面的冒号)。您显示的JS代码不包括CSRF令牌,这肯定会引发500服务器错误。在AJAX调用中包含CSRF令牌有不同的方法,下面是一个示例 以您的形式:
<form>
{{ csrf_token() }}
....
var token = $('input[name="_token"]');
....
$.ajax({
data: {_token: token, id: id, memberId: memberId},
...
有,还有拉威尔医生
顺便说一句,500服务器错误
只是一个一般性错误,告诉您,有一个服务器错误。如果要解决这个问题,您确实需要知道错误是什么——您应该能够在laravel和webserver(Apache/nginx/etc)日志中看到这一点。您的日志可能会显示类似“CSRF令牌失配异常”的内容,这可能会直接引导您找到答案!:-)
编辑
我刚刚注意到您的Javascript中有一个输入错误,我最初将其复制到了我的答案中。这可能只是一个输入错误,而不是在您的真实代码中,因为它可能会抛出JS错误,而不是运行并生成服务器错误
data: {_token: token, id: id, memberId, memberId},
应该是:
data: {_token: token, id: id, memberId: memberId},
(在
memberId
后加冒号)。什么是info()
函数?在Laravel中,它充当日志,因此如果它是成功的,我会在日志文件中看到一个“hi”。我不知道Laravel
具有该函数。当您发出请求时,您在网络选项卡中得到的响应是什么?如果失败,您的laravel.log
中会出现什么错误(我建议先清除日志)。什么是info()
函数?在laravel中,它充当日志,因此如果成功,我会在日志文件中看到“hi”。酷,我不知道laravel
具有该功能。当您发出请求时,您在网络选项卡中得到的响应是什么?如果失败,您的laravel.log
(我建议先清除日志)。@jeremy:找到这个问题了吗?嘿,不,这更像是一个路由问题,而不是添加分号:/是什么?@jeremy:找到这个问题了吗?嘿,不,这更像是一个路由问题,而不是添加分号:/是什么?