2016-10-29 15 views
1

私はfullcalendarを使用しています。ユーザーが特定の日付をクリックしたときに新しいイベントを作成する必要があり、Laravelコントローラを使用してAjaxリクエストでデータを保存しています。私はカレンダーでイベントを作成することができますが、イベントを作成した後でコントローラにデータを送信できず、さらにブラウザタブがフリーズします。誰でも私が間違っている場所を修正できますか?問題の解決策を提供することができます。AjaxデータをLaravelコントローラに送信

select: function(start, end, allDay) { 
var title = event_name;// Event Title: 
var eventData; 
if (title) { 
    eventData = { //creates a new event on the calendar 
     title: title, 
     start: start, 
     end: end, 
     allDay: allDay 
    }; 
    $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true 

    $.ajax({       
     data:eventData, 
     type: 'POST', 
     url:"/projects/calendar/store", // your url 
     beforeSend: function (request) { 
      return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content')); 
     }, 
     success: function(response) { 
      console.log(response); 
     } 
    }); 
} 
$('#calendar').fullCalendar('unselect'); 
}, 

これは私のルートファイルです。取得と送信の両方を試みましたが、動作していません。

Route::get('/projects/calendar/store','[email protected]'); 

これはコントローラで、ajaxリクエストで送信されたデータのみを処理しますが、表示はしません。

public function calendarStore(Request $request) 

{ 
$calendar = new Calendar; 
Input::all(); 

$userId = Auth::user()->id; 
$event_title =$request->input('title'); 
$start =$request->input('start'); 
$end =$request->input('end'); 

$calendar_event = Calendar::create([ 
    'user_id' => $userId, // I can get the user ID 
    'project_id' => 2, 
    'event_title' => $event_title, 
    'start_date' =>$start, 
    'end_date' => $end 
]); 
} 
+0

を更新しました

select: function(start, end, allDay) { var title = prompt('Are u sure you want to apply for job? Yes/No:');// Event Title: var start_time = moment(start).format(); var end_time = moment(end).format(); //onclick get date var eventData; if (title) { eventData = { title: title, start: start, end: end, allDay: allDay }; $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true $.ajax({ type: 'GET',//POST changed to GET url: "/projects/calendar/store", // your url data: { //event data from global variable title: event_name, start: start_time, end: end_time, event_id:event_id }, beforeSend: function (request) { return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content')); }, success: function(response) { console.log(response); } }); } $('#calendar').fullCalendar('unselect'); }, 

は、まず、あなたはポストルートにあなたのルートを変更する必要があります。あなたのAjaxオブジェクト内では、データをポストしているときにタイプをPOSTに設定していますが、ルートでも同じことをしなければなりません。 第2に、あなたのカレンダーストアメソッド内でネットワークタブとdd($ request)をチェックしてみましたか?これを試しておらず、あなたのコントローラメソッドに到達するかどうかを確認してください。 第3に、同じ方法で 'success:function(){...}'の下にクロージャを受け入れるajaxオブジェクトにエラーキーを追加し、 'error:function(response){console.log( 'here'応答); } 'を使用して、投稿時にエラーが発生しているかどうかを確認します。 –

+0

エラーは何ですか?ログに記録されるAJAXエラーまたはApacheログエラーがなければなりません。 –

答えて

1

このようなあなたのAJAX dataパラメータのあなたの宣言置き換える:期待どおりユーザーのクリックは/特定の日/日のそれは意志で選択すると、その作業:私は以下の修正をしました

//creates a new event on the calendar 
eventData = { 
    "title": title, 
    "start": start, 
    "end": end, 
    "allDay": allDay 
}; 
+0

引用符のプロパティは、無効な識別子にのみ必要です。私はこれが問題だとは思わない、何か他のものがなければならない。 –

0

をタイトルを求めて、イベントをデータベースに保存します。ルート

Route::get('/projects/calendar/store','[email protected]'); 

更新コントローラー

public function calendarStore(Request $request) 
{ 
    $userId = Auth::user()->id; 
    $event_title =$request->get('title'); 
    $start =$request->input('start'); 
    $end =$request->input('end'); 
    $project_id= $request->input('event_id');  


    $calendar_event = Calendar::create([ 
     'user_id' => $userId, 
     'project_id' => $project_id, 
     'event_title' => $event_title, 
     'start_date' =>$start, 
     'end_date' => $end 
    ]);  
    return $calendar->all(); 
} 
関連する問題