Laravel Api AJAX форма не будет представлять - PullRequest
0 голосов
/ 31 августа 2018

Это мой первый проект API. Можете ли вы помочь мне с моим кодом, пожалуйста?

Я не вижу проблемы.

Вот мой контроллер.

public function store(Request $request)
{
    //
   $valid=Validator::make($request->all(),[
      'text'=>'required',
      'body'=>'required'
   ]);

   if($valid->fails()){
       return response()->json(['message'=>$valid->messages()]);
   }else{

    $item= Item::create([
        'text'=>$request->input('text'),
        'body'=>$request->input('body')
    ]);
    return response()->json($item);
   }
}

и вот моя форма. Что-то не так в форме?

<form id="form">
        <div class="form-group">
            <label>Text :</label>
            <input type="text" id="text" class="form-control col-sm-4">
        </div>

        <div class="form-group">
            <label>Body :</label>
            <textarea id="body" class="form-control col-sm-4"></textarea>
        </div>

        <div class="form-action">
            <input type="submit" class="btn btn-primary" value="submit">
        </div>
    </form>

и код ajax между функцией show работает, но я не знаю, в чем проблема?.

$('#form').on('submit', function (e) {
        e.preventDefault();//prevent the form to submit to file
        let text = $('#text').val();
        let body = $('#body').val();
        addItems(text, body);
    });


    function addItems(text, body) {
        var item = {
            text: text,
            body: body
        };
        $.ajax({
            method: 'POST',
            url: 'http://localhost:8000/api/items',
            data: item,
            success: function (item) {
                alert('done the item number' + item.id + ' has been added!!');
                location.reload();
            },
            error: function () {
                alert('error')
            }
        })
    }

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Проблема в том, что вы отправляете форму, не отправляя маркер подделки межсайтового запроса. Добавьте директиву @csrf на ваш взгляд Тогда отправь это Хасан написал;)

0 голосов
/ 31 августа 2018

, если ваш внешний источник отделен от внутреннего, то добавьте кросс-ресурсное распределение ресурсов пакет для вашего проекта Laravel.

если это в вашем представлении laravel, тогда добавьте токен csrf в метатег - <meta name="csrf-token" content="{{ csrf_token() }}">

и отправьте его с вашим запросом ajax { _token : document.querySelector('meta[name="csrf-token"]').content}

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