Почему я получаю код ошибки 422?

Я делаю запрос POST, но не могу получить ничего, кроме ответа 422.

Код клиента Vue.js:

new Vue({
  el: '#app',

  data: {
    form: {
      companyName: '',
      street: '',
      city: '',
      state: '',
      zip: '',
      contactName: '',
      phone: '',
      email: '',
      numberOfOffices: 0,
      numberOfEmployees: 0,
    }
  },

  methods: {
    register: function() {
      this.$http.post('/office-depot-register', this.form).then(function (response) {

        // success callback
        console.log(response);

      }, function (response) {

        // error callback
        console.log(response);

      });
    }
  }
});

Маршруты Laravel:

Route::post('/office-depot-register', ['uses' => 'OfficeDepotController@register', 'as' => 'office-depot-register']);

Контроллер Laravel:

public function register(Request $request)
{
    $this->validate($request, [
        'companyName' => 'required',
        // ...
    ]);

    // ...
}

person Donnie    schedule 10.05.2016    source источник
comment
Из того, что я могу сказать, Laravel возвращает 422, что означает, что запрос не соответствует требованиям проверки. (Например, отсутствует обязательное поле, другие ошибки проверки) в laravel с ajax"> stackoverflow.com/questions/34966690/ Поскольку у вас есть companyName, но это пустая строка, это вполне может быть причиной вашей проблемы.   -  person Brandon Anzaldi    schedule 10.05.2016
comment
Это точно. Оставьте свой комментарий в качестве ответа, и я приму его. ????   -  person Donnie    schedule 10.05.2016
comment
Рад, что смог помочь :)   -  person Brandon Anzaldi    schedule 10.05.2016


Ответы (1)


Laravel позволяет вам определять определенные проверки для полей, которые он принимает. Если вы не пройдете эти проверки, он вернет HTTP 422 - Unprocessable Entity. В вашем конкретном случае кажется, что вы не проходите свои собственные проверочные тесты с пустым объектом скелета, поскольку требуется companyName, а пустая строка не проходит требуемую проверку.

Предполагая, что другие поля проверяются аналогичным образом, заполненный объект данных должен решить вашу проблему.

data: {
  form: {
    companyName: 'Dummy Company',
    street: '123 Example Street',
    city: 'Example',
    state: 'CA',
    zip: '90210',
    contactName: 'John Smith',
    phone: '310-555-0149',
    email: '[email protected]',
    numberOfOffices: 1,
    numberOfEmployees: 2,
  }
}
person Brandon Anzaldi    schedule 10.05.2016
comment
Как бы вы изящно перехватили эту ошибку и отобразили ошибки, используя возвращенный ответ JSON, чтобы 422 не отображалось, или это нормально? - person Robert Rocha; 03.06.2020