将Ajax数据发送到Laravel控制器

时间:2016-10-29 03:38:23

标签: php jquery ajax laravel fullcalendar

我正在使用fullcalendar,我需要在用户点击特定日期时创建一个新事件,我使用Laravel控制器来存储由ajax请求发送的数据。我可以在日历上创建一个事件,但是我无法将数据发送到控制器,而且在创建事件后浏览器选项卡会冻结。任何人都可以纠正我错在哪里?或者为问题提供更好的解决方案。

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');
},

这是我的路线文件,我已尝试过get和post,但没有一个正常工作。

Route::get('/projects/calendar/store','FrontEndController@calendarStore');

这是Controller,它只处理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
]);
}

2 个答案:

答案 0 :(得分:0)

替换你的ajax data参数的声明,如下所示:

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

答案 1 :(得分: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');
},

更新路线

Route::get('/projects/calendar/store','FrontEndController@calendarStore');

更新控制器

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();
}