2016-06-11 4 views
0

Laravel 5,2 - новое приложениеAjax возвращения 500 ошибка в Laravel 5.2

Ive только что вернулся в 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', '[email protected]'); 

Контроллер

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++; 

    } 


} 

UPDATE:

Спасибо за поддержку от всех выше я поставил все предложения, которые люди помогли мне код лучше и решить проблему ... Я также обнаружил, что, когда я конвертировать $ val в int, который он обновлял в базе данных. Благодарю вас

+0

Я думаю, это потому, что $ запросы не определены, но вы действительно, действительно, действительно должны взглянуть на ваши журналы сервера. – hank

+0

Ваш контроллер не имеет функции возврата. Это может быть так. и более succint использовать 'Page :: find ($ id)' – Abiodun

ответ

1

Если вы хотите использовать jquery ajax в laravel, вам необходимо необходимо, чтобы передать токен laravel в данные запроса ajax!

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

Два быстрых совета, в которых вам не нужно использовать метатеги в html и любой настройке ajax. Единственное, что вам нужно сделать, это сделать переменную в вашем представлении, названную, например, токеном var token = '{{Session :: token()}}', а затем передать его в ajax-данных. Другим советом является то, что вместо использования статического URL-адреса вы можете сделать переменную в своем представлении для вашего маршрута post var url = '{{Route ("name")}}'.

+0

cheers buddy ill реализовать их в –

+0

Illuminate \ Foundation \ Bootstrap \ HandleExceptions-> handleError (2, 'Invalid argumen ...' У меня это в ошибке log наверху –

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++; 

    } 


} 
+0

ive обновил функцию, однако ее не нравится для каждого ... мне кажется, что он не передает данные –

+0

'dd ($ id)' и посмотреть, что у вас есть – Abiodun

+0

i can not, кажется, как и его ajax, я попытался вернуть dd ($ id) также –

Смежные вопросы