2016-05-10 23 views
4

私はPOSTリクエストをしていますが、422レスポンス以外は取得できません。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' => '[email protected]', 'as' => 'office-depot-register']); 

Laravelコントローラー:

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

    // ... 
} 
+1

私が知る限り、Laravelは422を送り返すと、要求が検証要件を満たしていないことを意味します。 (必要なフィールドが欠落している、他の検証の失敗など)http://stackoverflow.com/questions/34966690/error-422-unprocessable-entity-in-laravel-with-ajax 'companyName'は必須ですが、空の文字列、それはあなたの問題を引き起こしている可能性があります。 –

+1

それはまさにそれです。あなたのコメントを回答として残して、私はそれを受け入れます。 – Donnie

+0

うれしい私は助けることができた:) –

答えて

2

ラールavelでは、受け入れるフィールドに対して特定のバリデーションを定義することができます。これらの検証に失敗すると、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, 
    } 
} 
関連する問題