2017-06-23 55 views
0

私はLaravel 5.3ソリューションを開発中です。私はカテゴリーのセットを更新するために私の意見の1つからAJAX経由でPOSTルートを呼び出そうとしますが、私はルートを呼び出すたびに404エラーが発生します。Laravel AJAX 404 for route

興味深いことに:開発中に、以下に示すJSコードを使ってルートを呼び出すことができました。しかし、コントローラコード自体を更新したので、例外は発生しません。ここで

は私のコントローラのアクションです:

public function updateTree(Request $request) 
{ 
    $data = $request->json()->all(); 

    $result = BlogCategory::rebuildTree($data, false); 

    if($result > 0) { 
     return Response::HTTP_OK; 
    } 
    return Response::HTTP_NOT_MODIFIED; 
} 

そしてここでJSのAJAXコール:

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

var updateTree = function (e) { 
    var list = e.length ? e : $(e.target), output = list.data('output'); 

    console.log(JSON.stringify(list.nestable('serialize'))); 

    $.ajax({ 
     url: '{{ action('[email protected]') }}', 
     type: "POST", 
     data: JSON.stringify(list.nestable('serialize')) 
    }); 
}; 

$(document).ready(function() { 
    $('#nestable2').nestable({ 
     group: 1 
    }).on('change', updateTree); 
}); 

コントローラルートがweb.php

Route::post('/service/blog/categories/updatetree', '[email protected]'); 

ようにそのようにバインドされていますあなたは、見るかもしれない私はここ(https://github.com/lazychaser/laravel-nestedset)LazyChaserからLaravel NestedSetモジュールを使用しています。

ご了承ください。

乾杯、 ジュール

+0

のように使用し、あなたのAjaxのURLで問題を引用しますか? – matiit

+0

@matiit nope、セキュリティチェックのルートグループ上のミドルウェア:Route :: group(['middleware' => ['web'、 'role:user | admin']]、function(){...} CSRFトークンはまた、例えば、ポストマンのために使用して、同一の要求をしようとしたときに404を得るのですかセットアップ – Julian

+0

設定されている? – matiit

答えて

0

あなたは開閉を持つあなたは、このコントローラのすべてのミドルウェア・セットを持っています。この

$.ajax({ 
    url: '{{ action("[email protected]") }}', 
    type: "POST", 
    data: JSON.stringify(list.nestable('serialize')) 
}); 
+0

こんにちはRaushan、私はそれを二重にチェックしましたが、これは問題を引き起こしません。ルートを呼び出すときにまだ404を取得します。あなたのご意見ありがとうございます - これ以上のアイデアはありますか?あなたがURL 'としてあなたのAJAX URL値に完全なURLを与えていないwhay – Julian

+0

: '/サービス/ブログ/カテゴリ/ updatetree'' –

+0

Raushanねえ、私は、静的なURLが、まだ同じ問題を呼び出す)(自分の行動を交換しようとしました。 Action()はコンパイル時に実際にプロトコルとホスト名を含むurl全体をビューに出力します。上のコードは私のブレードビューを示しています。 – Julian