Laravel Ajax Не удалось загрузить сообщение - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь обновить данные, но получаю ошибку, не удалось загрузить сообщение.

Код AJAX:

jQuery(document).ready(function($)  {


    $('#update-data').on('click',function(){
alert("run");
    //  e.preventDefault(e);
        $.ajax({
            type: "POST",
            url: "teachers/" + $('#update-data').attr("value"),
            dataType: 'json',
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            data : $(this).serialize(),
            beforeSend: function() {

    },
            success: function (data) {
                    alert("updated");
            },
        });
    });
});

просмотр:

, когда я пробую все текстовые поля в div, я получаю сообщение об ошибке при загрузке сообщения,

<div id="update-form">
      //all text fields
 <button type="button"name="id" value="{{@$teacher->id}}" id="update-data" >UPDATE</button> 
 </div>

, но когда я помещаю все в форму, мои данные обновляются правильно, но в этом случае ajaxКод полностью игнорируется, и обновляется только последняя запись.

<form action="@if(isset($teacher)) {{route('teachers.update', $teacher->id)}} @else {{route('teachers.store')}}
            @endif" method="post" id="update-form" autocomplete="off" enctype="multipart/form-data" >
<button type="submit" name="id" value="{{@$teacher->id}}" id="update-data" > UPDATE</button>    
</form>

Ошибка консоли:

app.js:10216 POST http://todolist.local/teachers/729 405 (Method Not Allowed)
app.js:10216 XHR failed loading: POST "http://todolist.local/teachers/729".
javascript?v=1567677915:4 XHR finished loading: GET "http://todolist.local/_debugbar/open?op=get&id=X15228e3cd6c2213f70bded7c0a69583b".

Обновление контроллера:

public function update(TeacherRequest $request, $id)
    {
        $teacher = Teacher::find($id);
  if($teacher->save()){
                  return response()->json([
                        'status' => 'success',
                        'msg' => 'esecond has been updated'
                    ]);
                }
    }

web.php:

Route::get('/', 'TeachersController@index')->name('home');
Route::resource('teachers', 'TeachersController');

1 Ответ

1 голос
/ 22 октября 2019

Обновите ваш запрос ajax, как показано ниже:

jQuery(document).ready(function($)  {


    $('#update-form').on('submit', function(e) {
    e.preventDefault();        
        $.ajax({
            type: "PUT",
           /*Your logic*/
        });
    });
});

Просмотр

<form action="@if(isset($teacher)) {{route('teachers.update', $teacher->id)}} @else {{route('teachers.store')}} @endif" method="post" id="update-form" autocomplete="off" enctype="multipart/form-data" >

 {{method_field('PUT')}}
 {{ csrf_field() }}

<button type="submit" name="id" value="{{@$teacher->id}}" id="update-data" > UPDATE</button>

</form>

Попробуйте это .. Пост ajax вызвал перезагрузку веб-страницы, прежде чем я смог получить результат, поэтому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...