Jquery Laravel控制器$request未接收AJAX请求

Jquery Laravel控制器$request未接收AJAX请求,jquery,ajax,laravel,Jquery,Ajax,Laravel,我很难理解我做错了什么 Myroute.php Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView'); Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions'); Route::get('/changeUserData', 'Use

我很难理解我做错了什么

Myroute.php

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::get('/changeUserData', 'UserController@changeUserData');
public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}

public function changeUserData(Request $request)
{
    if($request->ajax()){
        $usernames = Input::get('usernameSend');

        if(isset($usernames)){
            $user = User::Where('username', '=', $usernames)->first();
            return redirect()->to('/settings'); 
        }else{
            Log::warning("Username não existe na base de dados.");
        }
    }
}

public function changeUserPermissions(Request $request) //Route::post
{
    return view('notUsedAtm');
}
Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::post('/changeUserData', 'UserController@changeUserData'); // This should be `POST`, `PUT`, or `PATCH`
以及myControllers.php

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::get('/changeUserData', 'UserController@changeUserData');
public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}

public function changeUserData(Request $request)
{
    if($request->ajax()){
        $usernames = Input::get('usernameSend');

        if(isset($usernames)){
            $user = User::Where('username', '=', $usernames)->first();
            return redirect()->to('/settings'); 
        }else{
            Log::warning("Username não existe na base de dados.");
        }
    }
}

public function changeUserPermissions(Request $request) //Route::post
{
    return view('notUsedAtm');
}
Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::post('/changeUserData', 'UserController@changeUserData'); // This should be `POST`, `PUT`, or `PATCH`
和我的jQuery

$(document).ready(function(){

    $('body').on('click', '.dropdown-toggle', function(){

        if((this.id).indexOf("dados") != -1){

            var content = this.id.replace("dados_", "");

            $.get('changeUserData', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){

                window.location.replace('settings');

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");

            });


        }else if((this.id).indexOf("permissoes") != -1){

            var content = this.id.replace("permissoes_", "");

            $.get('changeUserPermissions', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){    

                window.location.replace('changeUserPermissions');    

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");    
            });   
        }   
    });    
});
$.post('/changeUserData', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})

$.post('/changeUserPermissions', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})
除了id名称之外,我的视图调用完全相同。我的意思是,我的按钮都是平等声明的,它们的id彼此不同

现在changeUserData可以工作,changeUserState也可以工作(在我的jQuery脚本中调用)。两者都接收请求并将其作为AJAX获取,但changeUserPermission不接收请求

正如在代码中评论的那样,如果我添加请求并询问它是否是AJAX请求,它将返回false如果我执行request->all(),它只返回一个空数组

有什么想法吗?已经搜索了一段时间,但什么也找不到

编辑:删除一些代码以使其更简短、更可读

编辑2:从路线角度看,一切都很好。例如,$.get('changeUserPermissions'…)正在调用正确的路由,我在路由上所做的一切都很正常。唯一的问题是它无法识别ajax请求。另外,dd($request->isMethod('get'))返回true

这是一份打印的dd($request)。如果你需要什么,说出来,我会发布


您确定
$.get
中的URL正确吗

它们应该是
/changeUserData
/changeUserPermissions
?(请注意前导的
/

另外,既然在您的路由中是这样定义的,那么
changeUserPermissions
应该是
POST

最后,通过
GET
发送
正文
,将不会得到预期的结果

根据您提供的信息,这应该可以:

route.php

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::get('/changeUserData', 'UserController@changeUserData');
public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}

public function changeUserData(Request $request)
{
    if($request->ajax()){
        $usernames = Input::get('usernameSend');

        if(isset($usernames)){
            $user = User::Where('username', '=', $usernames)->first();
            return redirect()->to('/settings'); 
        }else{
            Log::warning("Username não existe na base de dados.");
        }
    }
}

public function changeUserPermissions(Request $request) //Route::post
{
    return view('notUsedAtm');
}
Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::post('/changeUserData', 'UserController@changeUserData'); // This should be `POST`, `PUT`, or `PATCH`
jQuery

$(document).ready(function(){

    $('body').on('click', '.dropdown-toggle', function(){

        if((this.id).indexOf("dados") != -1){

            var content = this.id.replace("dados_", "");

            $.get('changeUserData', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){

                window.location.replace('settings');

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");

            });


        }else if((this.id).indexOf("permissoes") != -1){

            var content = this.id.replace("permissoes_", "");

            $.get('changeUserPermissions', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){    

                window.location.replace('changeUserPermissions');    

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");    
            });   
        }   
    });    
});
$.post('/changeUserData', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})

$.post('/changeUserPermissions', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})

有关更多信息以及通过jQuery发布数据的方法,请参阅。如果您想使用
put
patch
,我相信您需要。

您确定
$.get
中的URL正确吗

它们应该是
/changeUserData
/changeUserPermissions
?(请注意前导的
/

另外,既然在您的路由中是这样定义的,那么
changeUserPermissions
应该是
POST

最后,通过
GET
发送
正文
,将不会得到预期的结果

根据您提供的信息,这应该可以:

route.php

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::get('/changeUserData', 'UserController@changeUserData');
public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}

public function changeUserData(Request $request)
{
    if($request->ajax()){
        $usernames = Input::get('usernameSend');

        if(isset($usernames)){
            $user = User::Where('username', '=', $usernames)->first();
            return redirect()->to('/settings'); 
        }else{
            Log::warning("Username não existe na base de dados.");
        }
    }
}

public function changeUserPermissions(Request $request) //Route::post
{
    return view('notUsedAtm');
}
Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
Route::post('/changeUserPermissions', 'UserController@changeUserPermissions')->name('postPermissions');
Route::post('/changeUserData', 'UserController@changeUserData'); // This should be `POST`, `PUT`, or `PATCH`
jQuery

$(document).ready(function(){

    $('body').on('click', '.dropdown-toggle', function(){

        if((this.id).indexOf("dados") != -1){

            var content = this.id.replace("dados_", "");

            $.get('changeUserData', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){

                window.location.replace('settings');

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");

            });


        }else if((this.id).indexOf("permissoes") != -1){

            var content = this.id.replace("permissoes_", "");

            $.get('changeUserPermissions', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){    

                window.location.replace('changeUserPermissions');    

            }).fail(function(err, status) {

                alert("There was an error. Try again please!");    
            });   
        }   
    });    
});
$.post('/changeUserData', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})

$.post('/changeUserPermissions', { usernameSend: content, '_token': $('meta[name=csrf-token]').attr('content') })
 .done(function (data) {
    ...
}).fail(function (xhr, status, error) {
    ...
})

有关更多信息以及通过jQuery发布数据的方法,请参阅。如果您想使用
put
patch
,我相信您需要。

在向
/changeUserPermissions
发送AJAX
get
请求时跟踪代码流

步骤1:

get
请求发送到
/changeUserPermissions

这是实现这一目标的路线:

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
步骤2:

此函数被激发

public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}
注意:这仍然是一个成功的AJAX响应,因此,继续

步骤3:

由于AJAX请求成功,将运行以下代码:

window.location.replace('changeUserPermissions');
执行
get
请求
/changeUserPermissions
,从而再次启动步骤2中的功能,但现在不包括任何数据

这就是我在代码中看到的情况

我认为您看到的空/假是步骤3中发生的
/changeUserPermissions
最新
请求(这就是
$request->ajax()
返回
假的原因)

附加:


您可以在浏览器的开发工具中看到步骤2的实际
dd($request->ajax())
,因为这是一个ajax请求,您可以在网络选项卡中看到它,只需找到请求,当向
/changeUserPermissions
发送AJAX
get
请求时,它可能会被命名为
/changeUserPermissions

,跟踪代码流

步骤1:

get
请求发送到
/changeUserPermissions

这是实现这一目标的路线:

Route::get('/changeUserPermissions', 'UserController@getchangeUserPermissionsView');
步骤2:

此函数被激发

public function getchangeUserPermissionsView(Request $request)
{        dd($request->ajax()); //returns false
// or dd($request->all()); -> returns []
}
注意:这仍然是一个成功的AJAX响应,因此,继续

步骤3:

由于AJAX请求成功,将运行以下代码:

window.location.replace('changeUserPermissions');
执行
get
请求
/changeUserPermissions
,从而再次启动步骤2中的功能,但现在不包括任何数据

这就是我在代码中看到的情况

我认为您看到的空/假是步骤3中发生的
/changeUserPermissions
最新
请求(这就是
$request->ajax()
返回
假的原因)

附加:


您可以在浏览器的开发工具中看到步骤2的实际
dd($request->ajax())
,因为这是一个ajax请求,您可以在网络选项卡中看到它,只需找到请求,它可能会被命名为
/changeUserPermissions

发送
changeUserPermissions
ajax请求后是否会被重定向?或者提醒您有错误?如果我按原样离开,页面将重新加载,并显示一个失败的空白页面(由于控制器上的模具和转储)。如果我在控制器上返回一个视图,我会被重定向到带有我设置的所有参数的视图…唯一的问题是它无法识别ajax请求,我需要从请求中获取一些数据…我无法使用用户输入::get()。例如,发送
ChangeUserPermissions
ajax请求后,您是否会被重定向?或者提醒您有错误?如果我按原样离开,页面将重新显示