1
我想使用JQuery完整日曆以及Spring MVC + Freemarker。JQuery完整日曆與Spring MVC ..不能發送日曆數據到控制器
我做了一個演示,如that。
目標:我需要發送日曆的數據,我只是把它放在控制器來處理它。
問題:當我將數據發送到控制器時,我在控制器上收到的字符串參數具有「undefined = undefined」!
的Freemarker:
[#ftl /]
<script type="text/javascript">
var calendar;
var calendarData;
function sendDataViaAjax() {
$.ajax(
{
url:"[@spring.url '/vacation/setVacation'/]",
type: "POST",
data: calendarData,
dataType: "json",
contentType: "application/json"
});
}
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$.getJSON('[@spring.url '/vacation/getVacation'/]', function (data) {
calendar = $('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: true,
selectHelper: true,
select: function(start, end, allDay) {
var title = prompt('Event Title:');
if (title) {
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick"
);
}
calendar.fullCalendar('unselect');
},
editable: true,
events:[data]
});
calendarData=data;
});
});
</script>
<style type='text/css'>
body {
margin-top: 40px;
text-align: center;
font-size: 14px;
font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;
}
#calendar {
width: 900px;
margin: 0 auto;
}
</style>
<body>
<div id='calendar'></div>
<button value="Test" onclick="sendDataViaAjax()"
</body>
Java的控制器,其字符串參數來爲 「不確定=不確定」:
@RequestMapping(value = "/vacation/setVacation", method = RequestMethod.POST)
public
@ResponseBody
String setVacation(@RequestBody String response) {
//Rest of code
}
我已經改變了一點點像下面的我的freemarker:
<script type="text/javascript">
var calendar;
var calendarData;
function doAjax() {
var test = JSON.stringify(calendarData);
$.ajax(
{
url:"[@spring.url '/vacation/setVacation'/]",
type: "POST",
data :test ,
dataType: "json",
contentType: "application/json"
});
}
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$.getJSON('[@spring.url '/vacation/getVacation'/]', function (data) {
calendar = $('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: true,
selectHelper: true,
select: function(start, end, allDay) {
var title = prompt('Event Title:');
if (title) {
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick"
);
}
calendar.fullCalendar('unselect');
},
editable: true,
events:[data] //To allow Calendar to render data ,I use events:data instead
});
calendarData = data;
});
});
</script>
通過這種方式,我可以發佈json字符串到控制器,從那裏我可以繼續我需要的東西。 現在,日曆呈現爲空而沒有我在初始化時傳遞的事件,這讓我非常吃驚。 但是,爲了呈現日曆數據,我做了一些小的更改,如上面的註釋中所述。 通過這種方式,每當我嘗試發佈json字符串時,出現以下錯誤:「Uncaught TypeError:將圓形結構轉換爲JSON」。 我做了很多試驗,但我仍然有提到的問題! 任何人都有一個關於那裏發生了什麼的想法!
感謝您的回覆。我試過了。 1-「日曆」的值未定義。 2 - 當我使用PUT時,我得到了相同的結果。這裏我需要發送該日曆對象到控制器的問題。問題是爲什麼「日曆」變量未定義,雖然它是一個全局變量! – Echo 2012-04-15 13:24:26
任何建議! – Echo 2012-04-15 13:25:40
我看到了演示頁面的html。你能否在html代碼之後嘗試移動腳本部分。我認爲腳本在頁面呈現之前得到執行。它只是一個嘗試。 – raddykrish 2012-04-15 13:44:19