500(内部服务器错误)在 Laravel 5 中使用 Ajax
Posted
技术标签:
【中文标题】500(内部服务器错误)在 Laravel 5 中使用 Ajax【英文标题】:500 (internal server error) using Ajax in Laravel 5 【发布时间】:2016-10-30 12:25:53 【问题描述】:我创建了一个喜欢和不喜欢的按钮,并通过 Laravel 5.2 中的 ajax 存储信息。我使用 wamp 作为我的本地主机。 起初,我看到有时喜欢和不喜欢被计算在内,有时则没有。 于是,我尝试通过console.log()在控制台中查看,在我的一些点击中发现了500(internal Server Error)。 我还确保正确提供了 csrf 令牌。
我不知道如何处理有时会出现有时不会出现的错误。
这是我的 likeajax.js :
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
var postId=0;
$('.option1').on('click', function (event)
event.preventDefault();
$('event').attr('disabled', 'disabled');
postId = event.target.parentNode.parentNode.parentNode.parentNode.dataset['postid'];
$.ajax(
method: 'GET',
url: urlLike,
data: postId: postId, _token: token,
)
);
$('.optionx').on('click', function (event)
event.preventDefault();
$('event').attr('disabled', 'disabled');
postId = event.target.parentNode.parentNode.parentNode.parentNode.dataset['postid'];
$.ajax(
method: 'GET',
url: urlDislike,
data: postId: postId, _token: token,
)
);
这是我的 LikeController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Depress;
use App\Http\Requests;
class LikeController extends Controller
public function postLike(Request $request)
$post_id = $request['postId'];
$post = Depress::find($post_id);
$post->like = $post->like+1;
$post->save();
return null;
public function postDislike(Request $request)
$post_id = $request['postId'];
$post = Depress::find($post_id);
$post->dislike = $post->dislike+1;
$post->save();
return null;
这是我喜欢的layout.blade.php,
<script>
var token = " csrf_token() ";
var urlLike = ' route('like') ';
var urlDislike = ' route('dislike') ';
</script>
更新: 虽然当我转到页面时:http://localhost:8000/dislike,
它显示
RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException:
任何帮助将不胜感激。
【问题讨论】:
你在 500 响应中得到了什么? 打开浏览器检查器的网络选项卡,选择 ajax 调用并查看它返回的响应。在此响应中,您将找到错误并可能找到解决方案。 jquery.min.js:4 GET localhost:8000/…500(内部服务器错误)发送@jquery.min.js:4ajax @jquery.min.js:4(匿名函数)@likeajax.js :33dispatch@jquery.min.js:3r.handle@jquery.min.js:3 那是你的控制台的回报。我们需要您的 ajax 调用的响应才能查看问题所在。你在用 Chrome 吗?按 F+12,单击网络,单击 ajax 调用,单击响应并用它更新您的问题。 另外,你确定它总是得到正确的帖子 ID 吗? 【参考方案1】:问题是你$post_id
是NULL
。
尝试使用$request->input('postId')
而不是$request['postId']
。
您还应该考虑使用POST
而不是GET
。
【讨论】:
问题依旧 另外,如果 $post_id 为 NULL,有时这是如何工作的? 好的,将您的 javascript 中的method: 'GET'
更改为 method: 'POST'
。不要忘记将您的路线更改为 POST。
检查您的postId
是否真的被发送。您可以在 ajax 调用的“标题”选项卡中检查这一点。向下滚动,直到看到“表单数据”。你看到那里的postId
了吗?此外,如果您的数据库中存在具有 postId
的 Depress
模型?
当我转到页面时:localhost:8000/dislike,它在 RouteCollection.php 第 218 行显示 MethodNotAllowedHttpException 也许,这可以帮助以上是关于500(内部服务器错误)在 Laravel 5 中使用 Ajax的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5:Ajax Post 500(内部服务器错误)错误
Laravel 5:Ajax Post 500(内部服务器错误)