Javascript 为什么AJAX在Laravel上获取/发布;“内部服务器错误”;当我尝试将数据用于数据库请求时?

Javascript 为什么AJAX在Laravel上获取/发布;“内部服务器错误”;当我尝试将数据用于数据库请求时?,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我有一个我无法解决的特殊问题 我在日历中拖放一些事件。当我删除它们时,我会向我的控制器发送一个Ajax Post请求,控制器可以在数据库中插入一些带有我通过Ajax发送的事件名称的内容 首先,我的JS文件中有我的代码: $("#someIDstuffHere").droppable({ appendTo: "body", tolerance: "pointer", accept: ".external-event", drop: function(event, u

我有一个我无法解决的特殊问题

我在日历中拖放一些事件。当我删除它们时,我会向我的控制器发送一个Ajax Post请求,控制器可以在数据库中插入一些带有我通过Ajax发送的事件名称的内容

首先,我的JS文件中有我的代码:

$("#someIDstuffHere").droppable({
    appendTo: "body",
    tolerance: "pointer",
    accept: ".external-event",
    drop: function(event, ui) {
        $(this).append($(ui.draggable));
        $.ajax({
            type: 'POST',
            url: 'events/add-cron-event',
            data: {
                "eventName": $(ui.draggable).text() // get the span text
            },
            success: function(data) {
                console.log("success");
            },
            error: function() {

            }
        });
    }
});
My EventController.php

public function postAddCronEvent(){ // Laravel use RESTful, so function can have post/get + url like add-cron-event
    $data['input'] = Input::get('eventName'); // get the data from POST
    $cronState = CronState::where('name', '=', $data['input'])->take(1)->get(); // Laravel Eloquent ORM make me able to do that kind of request... 
    foreach ($cronState as $state) {
        var_dump($state);
    }

}
当我通过GET(而不是POST)使用时,var_转储结果(美化)

当我这么做的时候,它就起作用了

    success: function(data) {
        console.log("success");
    }
在控制台中显示“成功”。日志

但是,现在,当我这样做的时候:

foreach ($cronState as $state) {
    $cronEvent = CronEvent::find($state->id);
    $cronEvent->h = 8;
    $cronEvent->save();
}
我的Chromium控制台显示“内部服务器错误500”(GET和POST测试)

我认为错误来自var_转储的数据。。。看起来很复杂

谢谢你的帮助

编辑到评论:


127.0.0.1---[17/Apr/2014:10:52:48+0200]“POST/stage/public/events/add cron event HTTP/1.1”500 1536“localhost/stage/public/events”“Mozilla/5.0(X11;Linux i686)AppleWebKit/537.36(KHTML,比如Gecko)Ubuntu Chrome/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36”

这是我在error.log或access.log中看到的唯一错误(此错误来自access.log…)

再次编辑:

$cronEvent=cronEvent::find($state->id);,似乎有问题

$state->id不起作用

但如果我把“21”或其他id,它的工作

我试图用intval()转换为Int,但它再次无法工作


回答

我用一些调查来回答

这似乎是一个雄辩的要求

我犯了一个错误。我试图更新主键,但我的数据库中不存在带有“13”或“14”的主键

但在纠正这个错误后,我尝试使用雄辩,但它不再有效

所以

我通过以下方式改变这一点:

DB::table('cronEvent')
  ->where('state_id', $state->id)
  ->update(array('h' => 10));
DB::table('cronEvent')
  ->where('state_id', $state->id)
  ->update(array('h' => 10));

我使用了查询生成器,而不是雄辩的,它的作品

回答

我用一些调查来回答

这似乎是一个雄辩的要求

我犯了一个错误。我试图更新主键,但我的数据库中不存在带有“13”或“14”的主键

但在纠正这个错误后,我尝试使用雄辩,但它不再有效

所以

我通过以下方式改变这一点:

DB::table('cronEvent')
  ->where('state_id', $state->id)
  ->update(array('h' => 10));
DB::table('cronEvent')
  ->where('state_id', $state->id)
  ->update(array('h' => 10));

我使用了查询生成器,而不是雄辩的,它的作品

内部服务器错误是服务器端的错误,请查看服务器的错误日志以了解问题所在。如上所述,请检查服务器日志并向我们提供错误信息。127.0.0.1---[17/Apr/2014:10:52:48+0200]“POST/stage/public/events/add cron event HTTP/1.1“500 1536”“”Mozilla/5.0(X11;Linux i686)AppleWebKit/537.36(KHTML,如Gecko)Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36”--这是我在error.log或access.log中看到的唯一错误(这个错误来自access.log…)我编辑了我的问题。我自己回答了这个问题,但谢谢大家。在下面添加你自己的答案。你的主键列名是什么?Eloquent还将假定每个表都有一个名为id的主键列。您可以定义一个primaryKey属性来覆盖此约定。也许这就是为什么你不能使用eloquentit的“id”。所以雄辩的人应该能够运用它。我不知道为什么不能。顺便说一句,查询生成器可以工作。