【问题标题】:500 (internal server error) using Ajax in Laravel 5500(内部服务器错误)在 Laravel 5 中使用 Ajax
【发布时间】: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 吗?

标签: php jquery ajax laravel laravel-5.2


【解决方案1】:

问题是你$post_idNULL

尝试使用$request-&gt;input('postId') 而不是$request['postId']

您还应该考虑使用POST 而不是GET

【讨论】:

  • 问题依旧
  • 另外,如果 $post_id 为 NULL,有时这是如何工作的?
  • 好的,将您的 javascript 中的 method: 'GET' 更改为 method: 'POST'。不要忘记将您的路线更改为 POST。
  • 检查您的postId 是否真的被发送。您可以在 ajax 调用的“标题”选项卡中检查这一点。向下滚动,直到看到“表单数据”。你看到那里的postId 了吗?此外,如果您的数据库中存在具有 postIdDepress 模型?
  • 当我转到页面时:localhost:8000/dislike,它在 RouteCollection.php 第 218 行显示 MethodNotAllowedHttpException 也许,这可以帮助
猜你喜欢
  • 2015-09-20
  • 2015-11-22
  • 2019-12-05
  • 1970-01-01
  • 2016-05-14
  • 2016-10-02
  • 2017-04-12
  • 2020-02-12
  • 2018-04-16
相关资源
最近更新 更多