2016-12-25 15 views
1

enter image description here jQueryからPHP Laravelに要素の配列を渡そうとしています。私はプロジェクトの更新の詳細にいます。 誰もが投稿要求を行うためにajaxを使用しています。それは動作しているが、その前にそのページのすべてのフィールドを検証する必要があるたびにスタックされるが、PHPは既にそれを行っている... PHPに配列を渡すだけでAjaxが必要だが、必要ないPHPがやっているのと同じことをやっています。だから、私はajaxのすべての検証ルールをスキップしたいと思います。POSTリクエスト中にAjaxの検証を無効にするLARAVEL

ご存知ですか?

これは私のコード

var token = $('input[name=_token]').val() 

$.ajax({ 
    data: {_token: token, dataOrder: orderArray}, 
    type: 'POST', 
    dataType: "json", 
    url: '/admin/projects/update/37', 
    error: function(data) { 
     instance 
     var errors = data.responseJSON; 
     console.log('server errors',errors); 
    }, 
    success: function (data) { 
     $(".content").append('<strong>Yeah</strong>'); 
    } 

}です)。 DDのこのコード私は常に422(処理不能エンティティ)を取得

が、これは私のコントローラのコアコード

public function update(Request $data) 
    { 

    $this->validate($data, [ 

     'title' => 'required|min:3|max:255|unique:projects,title,' . $data->id, 
     'slug' =>'min:3|max:255|unique:projects,slug,' . $data->id, 
     'date' => 'required|before:now', 
     'client' => 'min:3|max:255', 
     'category' => 'required', 
     'image_list' => 'image|max:2000', 
     'description' => 'required|min:3' 

    ]); 

    $update = Project::find($data->id); 
    $update->title = $data->title; 
    $update->slug = $this->slug($data, $data->slug); 
    $update->date = $data->date; 
    $update->client = $data->client; 
    $update->category_id = $data->category; 
    $update->description = $data->description; 

    $update->save(); 
} 

スクリーンショットで

($データ - >すべての()); enter image description here

+0

orderArrayをどのように構築しますか?それはシリアル化されたデータですか? –

+0

orderArrayは、picsのIDをKEY、単純な増加ループをVALUEとして形成する連想配列です。私はjQuery UIをソート可能に使用しており、移動した要素の新しい位置のトレースを保持しています。 picの位置を変更するたびに、orderArrayはpic IDに関連付けられたより高いまたはより低いループ番号を持ちます。 – rolfo85

答えて

0

のドキュメントを参照してください:jQuery Post Ajax call

最も簡単なAjax呼び出しを検証せずにjQueryのを使用して:

$.ajax({ 
    type: "POST", 
    url: "http://your.url.com", 
    data: {your: data}, 
    success: function() { // Executes on successful call }, 
}); 
+0

私は現在のコードを投稿しました。そのコードで私は常に「422(Unprocessable Entity)」を取得します – rolfo85

+0

ID 37のプロジェクトが実際に存在することを確認しましたか?また、更新ajax呼び出しでは、 '_token'変数は' {!! csrf_token()!!} '... – andcl

+0

はいID 37は私が使っているテストページです。 csrf_tokenについて私は多くのソリューションを見ていましたが、現在は隠しフィールドからその価値を得て、データの一部として送信しています。以前私はそれを正しく含めていないときに他のエラーを出すことがありましたが、この方法ではうまくいくように見えましたが、私はそんなに知らないのです...あなたの方法でそれを含めるにはどうすればいいですか?どこに貼り付けが必要ですか? csrf_token()!!}? – rolfo85

0

は、あなたのHTMLページでCSRFトークンを持っています。

<meta name="csrf-token" content="{{ csrf_token() }}"> 

スクリプトでは、ajaxSetupメソッドを使用してx-csrf-tokenヘッダーを設定します。

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

あなたのデータ{}オブジェクトの_tokenビットを削除します。

+0

私の更新ページにそのメタタグはありません。CSFRトークンは、更新フォーム内のLaravelフォームビルダによって隠された入力タイプとして追加されます。 – rolfo85

+0

そのページでjavascriptアクションを無効にして、ajaxリクエストと関係があるかどうかを確認するか、サーバコード – verax

+0

に間違っているかどうかを確認してください。console.log(トークン)に表示されますか? – verax

0

私のAjax呼び出しでLaravelフォームの検証に関するエラーが発生したのは、Ajax呼び出しが他のフィールドがある更新フォームの内部で行われたためです。この方法でPHPのAjaxはすべて必須フィールド。

更新フィールドから新しいコントローラーを設定し、すべてが機能しました。

関連する問題