将$ .post路由到控制器的方法

时间:2015-01-15 17:44:44

标签: javascript laravel laravel-routing

laravel的新手,在预制项目上的工作是将功能复制到另一部分,但现在我仍然坚持:

Failed to load resource: the server responded with a status of 404 (Not Found) (17:26:57:137 | error, network)   at http://localhost/testimonials/sort

执行操作的网址: http://localhost/ ***** /公共/ index.php的/管理/推荐

我有一个由事件调用的javascript:

sortTestimonials: function () {
        $("#sortable_1, #sortable_2").sortable({connectWith: ".connectedSortable", stop: function () {
                var t = [];
                t = $(".connectedSortable").sortable("toArray"), 
                $.post("/testimonials/sort", {list: t})
            }})
    },

那个$ .post(..)应该去我的routes.php,我有控制器/部分的路线

# Testimonials Routes
    Route::resource('testimonials', 'AdminTestimonialsController', ['except' => ['show', 'destroy']]);
    Route::post('testimonials/toggleVisibility', 'AdminTestimonialsController@toggleVisibility');
    Route::post('testimonials/delete', 'AdminTestimonialsController@delete');
    Route::post('testimonials/sort', 'AdminTestimonialsController@sort');
        //this last one being the one it's supposed to grab

然后我有我的控制器AdminTestimonialsController.php,我无法进入(显然只显示有问题的方法)

public function sort() {
        $order = Input::get('list');
        if (Request::ajax()) {
                        $result = $this->testimonial->sortArticles($order);
        }
        return Redirect::route('admin.testimonials.index');
    }

那么我在这里做错了什么,或者我错过了什么让它起作用?

1 个答案:

答案 0 :(得分:0)

由于您的应用程序不在您的域的根目录中,因此您无法使用/testimonials/sort。它会向http://localhost/testimonials/sort而不是http://localhost/*****/public/index.php/testimonials/sort发出请求。

您可以在PHP / Blade模板中的某处定义baseUrl js变量,并在发出ajax请求时使用它。

<script>
    var baseUrl = "{{ URL::to('/') }}";
</script>

然后以后

$.post(baseUrl + "/testimonials/sort", {list: t})

注意您仍然需要在网址前面显示/,因为baseUrl不会有斜杠。