2017-08-28 9 views
0

次のajaxリクエストでPOSTメソッドを使用すると、 "Method not allowed"エラーがスローされます。 ajaxを使用せずにPOSTフォームを使用すると、適切なメソッドに移動します。 Router.phpでlaravelとajaxでPOSTメソッドを使用する方法

:ビューで

$this->post('TestPost','[email protected]'); 

、Ajaxのリクエストがある:コントローラで

$.ajax(
{   
type: "POST", 
url: 'TestPost', 
data: "{}", 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
cache: false, 
success: function (data) { 
alert('hid post');  

SetHotandWorstData(data,'hotquantity'); 

}, 

error: function (msg) { 
alert('error'); 
alert(msg.responseText); 
} 
}); 

function TestPostMethod(Request $request) 
{ 
    $hotworstsalesdata = DB::table('100_INVOICEDETAIL')    
    ->select('100_INVOICEDETAIL.ITEMCODE','100_INVOICEDETAIL.ITEMNAME', 
DB::raw('SUM("100_INVOICEDETAIL"."QTY") as 
salesqty'), DB::raw('SUM("100_INVOICEDETAIL"."AMT") as salesamt')) 
    ->groupBy('100_INVOICEDETAIL.ITEMCODE','100_INVOICEDETAIL.ITEMNAME') 
    ->orderBy('salesqty') 
    ->take(10) 
    ->get(); 
    return Datatables::of($hotworstsalesdata)->make(true); 
} 
+0

たぶんLaravelが混乱しています引用符を削除し、jsonのコンテンツタイプを削除しますか?私はララヴェルが魔法をたくさん持っていることを知っています。それは、あなたがそれを使うことを決めたときに得られるものの一つです。私が言ったことを試して、何が起こるかを見てください。 –

答えて

4

あなたはPOSTデータに "_token" を渡す必要があります。 Laravelは、サイト間要求偽造(CSRF)攻撃に対してトークンを使用します。

私がしている

laravel 5.4と私のシステムで同じシナリオを再作成して、それが私のために働いています:あなたのAJAXリクエストに

data: { _token: "{{ csrf_token() }}" } 

更新答えを次のコードを使用します。

私のルート(web.php)のコードは次のとおりです。

Route::post('/test_post', '[email protected]'); 

Javascriptのコードは次のとおりです。

<script type="text/javascript"> 
    $.ajax({ 
     type: "POST", 
     url: '{{ url('/') }}/test_post', 
     data: { _token: "{{ csrf_token() }}" }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     cache: false, 
     success: function (data) { 
      console.log(data); 
     }, 

     error: function (msg) { 

      console.log(msg.responseText); 
     } 
    }); 
    </script> 

DashboardControllerファイルは次のとおりです。

public function getData(Request $request) { 
    print_r($request);  
} 
+0

私はこのように変更しました=>データ:{"_token": "{{csrf_token()}}"}しかし、まだエラー –

+0

を投げてください:data:{_token: "{{csrf_token()}}"}私はこれがうまくいけば分かりません – Rajinder

+0

私はこのように試しました=>タイプ: "POST"、 url: 'TestPost'、 data:{_token: "{{csrf_token()}}"、 contentType: "application/json; charset = utf-8 "、 –

0

最近、私はDELETEメソッドでエラーが発生しました!私はcsrf tokenをhtmlヘッダーに設定して固定し、ajaxを取得します。これはあなたの問題を解決することを願って...アヤックスで

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

、あなたはちょうどオフのままで通常のポスト・アレイを投稿することができ、JSONの文字列を掲示している理由

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