在laravel 5.2中,Ajax返回500错误

时间:2016-06-11 18:26:42

标签: javascript php ajax laravel

Laravel 5.2 - 新申请

我刚回到laravel,我在ajax帖子上遇到了麻烦。

基本上,当您重新排序列表时,调用ajax来更改顺序并将其保存在数据库中。我一直在研究,但似乎没有人帮助我..

到目前为止我有什么......

html / blade.php代码:

<ul class="sortable">
    @foreach ($pages as $page)
        <li class="ui-state-default" data-id="{{ $page->id }}">{{ $page->name }}</li>
    @endforeach
</ul>

的Ajax

$(function() {
    $('.sortable').sortable().bind('sortupdate', function(e, ui) {

        var id = $('ul.sortable li').map(function(){
            return $(this).data("id");
        }).get();

            $.ajax({
                method: 'post',
                url: '/abc',
                data: {
                    id: id, 
                    _token: token
                },
                dataType: 'json',
                error: function (data) {
                    console.log('Error:', data);
                },
                success: function (msg) {
                    alert(msg);
                }
            });


        });
    });

routes.php文件

Route::post('abc', 'HomeController@SomeFunction');

控制器

public function SomeFunction(Request $request){


    $id = $request->input('id');

    $i = 1;

    foreach($id as $val) {

        $page = Page::where('id', (int)$val)->first();

        $page->order = $i;
        $page->save();

        $i++;

    }


}

更新:

感谢上面所有人的支持,我已经提出了所有人们帮助我更好地编码并解决问题的建议......我还发现,当我将$ val转换为int时,它正在更新中数据库。谢谢

2 个答案:

答案 0 :(得分:1)

如果你想在laravel中使用jquery ajax,你需要在ajax请求数据中传递laravel标记!

 data: {
           id: 'id', _token: token
 },

您不需要在html和任何ajax设置中使用元标记的两个快速提示。您需要做的唯一事情是在视图中创建一个名为例如令牌 var token =&#39; {{Session :: token()}}&#39; 的变量,然后将它传递给ajax数据。另一个提示是,您可以在视图中为您的后期路线制作变量,而不是使用静态网址var url =&#39; {{Route(&#34; name&#34;)}}&#39;。

答案 1 :(得分:0)

您在控制器中忘记了您的请求 确保您使用

use Request 然后将控制器代码编辑为此格式

public function SomeFunction(Request $request){


    $id = $request->input('id');

    $i = 1;

    foreach($id as $val) {

        $page = Page::where('id', $val)->first();

        $page->order = $i;
        $page->save();

        $i++;

    }


}