2

我有一个 RESTful 控制器,我试图让我的 ajax 访问,但我不断收到内部服务器错误 500,找不到控制器方法。

在 routes.php 我有:

Route::controller('friends', 'FriendController');

在控制器中我有:

class FriendController extends Controller{
    public function postAdd(){
        $user_id = Auth::user()->id;
        $friend_id = Input::get('id');
        $friend = new Friend;
        $friend->user_id = $user_id;
        $friend->friend_id = $friend_id;
        if($friend->save()){
            return Response::json(array('status' => 'OK'));
        }else{
            return Response::json(array('status' => 'FAIL'));
        }
    }
}

而ajax是:

$.ajax({
                url : "{{URL::action('FriendController@postAdd')}}",
                type : "POST",
                data : { id : $(this).attr('val')}
            })
            .done(function(json){
                console.log(json);
            });

导致http://localhost/velser/friends/AddURL。

知道我哪里出错了吗?如果您发现代码有任何其他相关问题,请告诉我!我仍然习惯于 laravel 4,所以我相信我仍然有很多问题。

编辑:现在也包括 Friend 模型:

class Friend extends Eloquent{
    protected $table = 'friends';
}
4

2 回答 2

1

你的代码没有错误,用最新的 laravel 更新测试。但是你需要更新你的Laravel Framework. 所以跑,

composer update

或者,

php composer.phar update

并确保您没有与模型类名称相同的控制器,例如Friend. 然后确保您的表中有created_atupdated_at字段。如果您不想使用此字段,只需将此行添加到您的模型中,

public $timestamps = false;
于 2013-09-29T03:33:31.733 回答
0

这个问题很难找到,但一旦找到了一个简单的解决方法。如果我早些时候将它包裹$friend->save()在一个 try catch 块中,我会很快找到它。我的表中没有 updated_at 和 created_at 列。但是 laravel 错误页面并没有告诉我这一点,只是失败了。将来,我会将内容包装在 try catch 块中以找到答案。

于 2013-09-29T05:58:08.973 回答