我有要求,每当我点击一天(在完整日历中),我需要弹出一个详细信息。我需要触发一个动作/控制器来获取细节。我在我的.js文件中有我的event.click。我一直在尝试在完整的日历jquery中使用remoteFunction。但是grails没有识别remoteFunction调用,而且我的屏幕出错(因为.js模板不可用)。请尽可能帮助我,
$(calId[calNo]).fullCalendar({
header : {
left : ' ',
center : 'title',
right : ' '
},
defaultView: 'month',
selectable: true,
weekMode : 'variable',
eventColor : 'white',
editable : false,
year : eventYr,
month : calNo,
events : allocData,
dayRender: function (event, element, view) {
for (i = 0, l = holidayData.length; i < l; i++) {
var dateString = holidayData[i].substring(0,10);
view.element.find('.fc-day[data-date="' + dateString + '"]').css('background-color', '#FF9999');
view.element.find('.fc-other-month').css('background-color', '#FFFFFF');
}
},
eventRender: function(event, element, view)
{
if(event.start.getMonth() !== view.start.getMonth()) { return false; }
},
eventClick: function(event) {
var selectedDate = String(event.start);
var newData = ${remoteFunction(controller: 'PreSchedule', action: 'calProcess')};
alert(newData);
$('#dateAllocation #selectedDate').text(String(selectedDate).substring(0,10) + ' ,' + String(selectedDate).substring(28,33));
$('#dateAllocation').modal('show');
},
select: function(date) {
var selectedDate = date;
$('#dateAllocation #selectedDate').text(String(selectedDate).substring(0,10) + ' ,' + String(selectedDate).substring(28,33));
$('#dateAllocation').modal('show');
}
});
可能是我正在混合服务器端代码和客户端代码,搞乱基础知识。提前谢谢。
我尝试使用jquery.ajax / createLink,而不是使用远程功能。但网址没有得到解决。
$("#link").click(function(event){
alert('link');
event.preventDefault();
date = '1985-01-01';
$.ajax({
url:'${createLink(controller:"Student",action:"checkLink")}',
// url:'/checkLink',
dataType: 'json',
type: 'POST',
//data: date,
success: function() {
console.log("The returned data is: ");
// show your modal, or do whatever you want.
}
});
我可以在浏览器开发者工具中看到错误
无法加载资源:服务器响应状态为404(未找到)
// smsFrontEnd /学生/ $%7BcreateLink(控制器:%22Student%22,动作:%22checkLink%22)%7D
如果可能的话,请帮帮我
答案 0 :(得分:0)
我认为你不能在.js文件中使用grails ajax tag libs。
但是,除此之外,这些taglib已被弃用,您无论如何都不应该使用它们。因为这不被认为是一种好的做法
http://grails.org/doc/latest/ref/Tags/remoteFunction.html
The formFunction tag and other Ajax related tags have been deprecated and will be removed from a future version of Grails. Applications may provide their own Ajax tags and/or Javascript plugins may provide Ajax tags of their own.
http://en.wikipedia.org/wiki/Unobtrusive_JavaScript
我认为你最好在那里使用jquery.Ajax而不是remoteFunction。
答案 1 :(得分:0)
如果你的控制器正在返回JSON数据,你可以按如下方式获取和使用它:
而不是:
var newData = ${remoteFunction(controller: 'PreSchedule', action: 'calProcess')};
alert(newData);
使用jQuery $.ajax
方法:
$.ajax({
dataType: 'json',
url: '${createLink(controller: 'preSechedule', action: 'callProcess')}',
data: {}, // no parameters
success: function(data) {
window.alert("The returned data is: "+data);
// show your modal, or do whatever you want.
}
});