AJAX POST请求不在后期路由中调用Controller方法

我的代码在尝试发出AJAX POST请求时给出了500内部服务器错误。 我已经完成了CSRF令牌部分。</ p>

这是我的JS代码</ p>

  $ .ajaxSetup({
headers:{\ n'X-CSRF-TOKEN':$('meta [name =“csrf-token”]')。attr('content')
}
});

$('#likeBtn') .on('click',function(e){

e.preventDefault();

//获取urlLink和activityId - 工作

$ .ajax({
type:'POST' ,
url:'。/ mainView / posttlike',
data:{activityId:activityId},
success:function(data){
console.log(JSON.stringify(data));
},

错误:function(e){
console.log(JSON.stringify(“Exception:”+ e));
}
});
});
</ code> </ pre >

这是我的帖子路线:</ p>

  Route :: post('/ mainView / postlike','ActivityController @ postLike') - &gt; name  ('postLike') - &gt;中间件('auth'); 
</ code> </ pre>

这是我的控制器方法:</ p>

 <  code> public function postLike(){
if(Request :: ajax()){
return Response :: json(Request :: all());
}
}
</ code> </ p re>

这是我的mainView.blade.php。 我真的不想使用表格,但我还是试过。</ p>

 &lt; form id =“likeForm”method =“POST”action =“#”&gt; \  n&lt; input class =“likeToken”type =“hidden”name =“_ token”value =“{{csrf_token()}}”&gt; 
&lt; a id =“likeBtn”data =“{{route(' activity.like',['activityId'=&gt; $ activity-&gt; activity_id])}}“&gt;
&lt; img src =”IMG / icons / like.png“alt =”赞“&gt;
&lt; / a&gt; {{$ activity-&gt; likes-&gt; count()}}
&lt; / form&gt;
</ code> </ pre>

如果我说,如果我 在我的路线中执行此操作,它会输出提供的信息。</ p>

  Route :: post('/ mainView / postlike',function(){
if(Request :: ajax) ()){
echo“Hi”;
}
}) - &gt; name('postLike') - &gt; middleware('auth');
</ code> </ pre>
\ n

按下“喜欢”按钮时显示“嗨”</ p>
</ div>

展开原文

原文

My code gives me 500 Internal Server error when trying to make AJAX POST request. I've done the CSRF Token part.

This is my JS code

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$('#likeBtn').on('click', function(e){

    e.preventDefault();

    //Getting urlLink and activityId - works

    $.ajax({
        type: 'POST',
        url: './mainView/postlike',
        data: {activityId : activityId},
        success: function(data){
            console.log(JSON.stringify(data));
        },
        error: function(e){
            console.log(JSON.stringify("Exception: " + e));
        }
    });
});

This is my post Route :

Route::post('/mainView/postlike', 'ActivityController@postLike')->name('postLike')->middleware('auth');

This is my controller method :

public function postLike(){
    if(Request::ajax()){
        return Response::json(Request::all());
    }
}

This is my mainView.blade.php. I didn't really want to use a form but I tried anyway.

<form id="likeForm" method="POST" action="#">
    <input class="likeToken" type="hidden" name="_token" value="{{ csrf_token() }}">
    <a id="likeBtn" data="{{ route('activity.like', ['activityId' => $activity->activity_id]) }}">
    <img src="IMG/icons/like.png" alt="likes">
    </a>{{ $activity->likes->count() }}
</form>

That being said, if I do this in my route, it outputs the message provided.

Route::post('/mainView/postlike', function(){
    if(Request::ajax()){
        echo "Hi";
    }
})->name('postLike')->middleware('auth');

It shows "Hi" when the like button is pressed

dongliang1893
dongliang1893 它说,local.ERROR:非静态方法Illuminate\Http\Request::ajax()不应该静态调用{“userId”:1,“email”:“test@gmail.com”,“exception”:“[object](ErrorException(code:0):非静态方法Illuminate\\Http\\Request::ajax()不应该在<ControllerFile>静态调用
接近 3 年之前 回复
dongwolu5275
dongwolu5275 检查storage/logs/laravel.log以查找错误。
接近 3 年之前 回复
dongtun3328
dongtun3328 服务器端脚本出错。尝试在服务器上启用错误反馈。
接近 3 年之前 回复

1个回答



在评论中,您发布了错误消息。 要解决此问题,请更改此项:</ p>

  if(Request :: ajax()){
</ code> </ pre>

:</ p>

  if(request() - &gt; ajax()){
</ code> </ pre>

对于第二个错误: </ p>

 <代码>响应() - &GT; JSON(请求() - &GT;所有()); 
</代码> </ PRE>

此外,您可以注入 Request </ code>类:</ p>

  public function postLike(Request $ request)
</ code> </ pre>
\ n

并使用 $ request </ code>代替 request()</ code> </ p>
</ div>

展开原文

原文

In the comments, you've posted the error message. To fix it, change this:

if(Request::ajax()){

to this:

if (request()->ajax()) {

For the second error:

response()->json(request()->all());

Also, you can inject Request class:

public function postLike(Request $request)

And use $request instead of request()

duanmajing9332
duanmajing9332 请求('activity_id')或request() - > activity_id或$ request-> activity_id如果您注入Request类对象。
接近 3 年之前 回复
dongyi1111
dongyi1111 最后一件事,我通过AJAX发送activity_id。 如何通过$ request访问它?
接近 3 年之前 回复
doutang7414
doutang7414 当您使用JS发送数据时,您可以在没有表单的情况下执行此操作。
接近 3 年之前 回复
dongsou8980
dongsou8980 另外,我需要一张表格吗? 没有表单我可以执行AJAX操作吗?
接近 3 年之前 回复
dqxz96998
dqxz96998 很高兴它有所帮助。
接近 3 年之前 回复
doure8758
doure8758 实际上,是的它有效,我不得不替换其他请求用途。 谢谢!
接近 3 年之前 回复
dongluxin2452
dongluxin2452 这意味着它有效。 你修复了一个错误,这个错误是完全不同的。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐