php - Laravel 5.3 - jquery ajax(内部服务器错误 500)

标签 php jquery ajax laravel laravel-5.3

我正在尝试在 laravel5 中使用 jquery ajax。实际上一直发生的是consolelog给我一个内部服务器错误500。我找到了一些 csrf 解决方案并将它们添加到我的代码中,但它们对我没有帮助。有什么想法吗?

$('.takImg').click(function(){
    var photoId = $(this).parent().attr('id');

    $.ajax({
        type     : "POST",
        url      : "/save_like",
        beforeSend: function (xhr) {
            var token = $('meta[name="csrf_token"]').attr('content');
            if (token) {
                return xhr.setRequestHeader('X-CSRF-TOKEN', token);
            }
        },
        data: {photoId : photoId},
        success : function(msg) {
                console.log(msg);
        },
        complete : function(r) {
                console.log(r);
        },
        error:    function(error) {
                console.log(error);
        }
    }); 
}); 

我还将这个元添加到我的头上:

<meta name="csrf_token" content="{{ csrf_token() }}" />

一切都经过路线:

`Route::any('/save_like', 'Controller@saveLike');`

至 Controller :

public function saveLike($photoId){
    DB::update('UPDATE `photo_links` SET likes = likes + 1 WHERE `id` = ?', array($photoId));
}

最佳答案

首先,_token 应始终在 http 请求中发送,以便您可以将其添加到数据中:

$('.takImg').click(function(){
    var photoId = $(this).parent().attr('id');
    var _token = $('meta[name="csrf_token"]').attr('content');

    $.ajax({
        type: "POST",
        url: "/save_like",
        data: {_token:_token, photoId:photoId},
        success : function(msg) {
            console.log(msg);
        },
        complete : function(r) {
            console.log(r);
        },
        error: function(error) {
            console.log(error);
        }
    }); 
}); 

内部服务器错误 500 意味着问题来自您的服务器,在您的情况下这意味着它来自 Controller 中的操作 saveLike ,所以我的猜测是这个问题来自表达式 WHEREid= ? :

DB::update('UPDATE `photo_links` SET likes = likes + 1 WHERE `id` = ?', array($photoId));
____________________________________________________________^^^^^^^^^^

您将数组传递给 = 这会导致问题,请尝试:

public function saveLike(){
    $photoId = INPUT::get('photoId');

    DB::update("UPDATE `photo_links` SET likes=likes+1 WHERE `id` = $photoId");
}

希望这有帮助。

关于php - Laravel 5.3 - jquery ajax(内部服务器错误 500),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081255/

相关文章:

php - 在 PHP 中解析日期字符串

javascript - 在前端或后端缓存

javascript - 通过循环的 JSON 响应

php - Laravel 5.4 - 创建用户

php - 执行长 Action

php - Mysql 选择/加入?

javascript - jQuery/Ajax IE7 - 长请求失败

jquery - 使用 jQuery 重命名 jQuery UI 选项卡

python - Django调试工具栏1.8离线模式

javascript - 如何将 JavaScript 监听器添加到 PrimeFaces Ajax 事件