2014-01-13 61 views
0

大家好我想要寫的我工作的公司一個PHP內部網發佈,但我已經打到這個問題一堵牆:Fullcalendar - 阿賈克斯不是在IE8

IE8的用戶,當他們通過添加事件點擊它提問所有問題的日子,但不會在MySQL數據庫中發佈任何內容,但它會在後續的IE,FF和Chrome上發佈。

下面的代碼

$(document).ready(function() { 

var user = '<?php echo $_SESSION['user_token'][0]; ?>'; 
var date = new Date(); 
var d = date.getDate(); 
var m = date.getMonth(); 
var y = date.getFullYear(); 

var calendar = $('#calendar').fullCalendar({ 
editable: true, 
header: { 
    left: 'prev,next today', 
    center: 'title', 
    right: 'month,agendaWeek,agendaDay' 
}, 

events: "../../web_assets/calendar/events.php", 
data: 'user='+user , 
type: "POST", 

// Convert the allDay from string to boolean 
eventRender: function(event, element, view) { 
if (event.allDay === 'true') { 
    event.allDay = true; 
} else { 
    event.allDay = false; 
} 
}, 
selectable: true, 
selectHelper: true, 


// Add event to Calendar 
select: function(start, end, allDay) { 
    var title = prompt('Event Title:'); 
    var url = prompt('Type Event url, if exits:'); 
    if (title) { 
    start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"); 
    end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: '../../web_assets/calendar/add_events.php', 
    data: 'title='+ title +'&owner='+ user +'&start='+ start +'&end='+ end +'&url='+ url , 
    type: "POST", 
    success: function(json) { 
    alert('Added Successfully'); 
    } 
    }); 
    calendar.fullCalendar('renderEvent', 
    { 
    title: title, 
    start: start, 
    end: end, 
    allDay: allDay 
    }, 
    true // make the event "stick" 
    ); 
    } 
    calendar.fullCalendar('unselect'); 
    }, 
    // Update Event on Calendar (Move Item) 
    editable: true, 
    eventDrop: function(event, delta) { 
    start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: '../../web_assets/calendar/update_events.php', 
    data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
    type: "POST", 
    success: function(json) { 
    alert("Updated Successfully"); 
    } 
    }); 
    }, 
    // Event update (resize event) 
    eventResize: function(event) { 
    start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: '../../web_assets/calendar/update_events.php', 
    data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
    type: "POST", 
    success: function(json) { 
    alert("Updated Successfully"); 
    } 
    }); 

} 

    }); 

}); 

如果有人能排序了這一點,你會成爲我的一天......

編輯

我讓你們建議的修改,請你能告訴我爲什麼更新事件不起作用? 如果需要,我可以發佈php PDO mysql語句...?

+0

Internet Explorer對JavaScript中的拼寫錯誤非常敏感,而其他瀏覽器可能會忽略任何小的拼寫錯誤。所以仔細檢查你的代碼,它可能只是一個缺失的分號或逗號。 –

回答

0

正如我在評論中所說的,首先檢查一下小的拼寫錯誤,因爲IE8對他們非常敏感。 然後:

1.You有重複申報editable: true,

2.Here兩個變量不var字定義:

eventDrop: function(event, delta) { 
    start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 

,並在這裏再次

eventResize: function(event) { 
    start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 

3.數據這種編碼方式不太安全

data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id, 
更好

是(jQuery將序列化你):

data: { 
    title: event.title, 
    start: start, 
    end: end, 
    id: event.id 
}, 

4.You還可以添加AJAX錯誤回調,像

$.ajax({ 
    /* removed the rest of the code for simplicity */ 
    success: function(json) { 
     alert('Added Successfully'); 
    }, 
    error: function() { 
     alert('something went wrong'); 
    } 
}); 

此處詳細瞭解AJAX的設置信息(http://api.jquery.com/jQuery.ajax/

對不起,我不能幫助你沒有絕對的後端鏈接。

+0

請你幫忙,爲什麼事件更新不會在上面工作^^^^ –

+0

好,爲了幫助你解決問題,我應該有可能重現它。不幸的是,我不能在沒有訪問你的後端PHP服務器的情況下這樣做。你可以自己做的是遵循我的建議並清理你的代碼。然後將錯誤回調添加到您的AJAX調用中,以瞭解發生了什麼。 –