2014-09-19 47 views
0

我有要求,每当我点击一天(在fullcalendar),我需要抛出一个弹出的细节。我需要触发一个动作/控制器来获取细节。我有我的event.click在我的.js文件中。我一直试图在我的完整日历jQuery中使用remoteFunction。但是grails不能识别remoteFunction调用,并且我的屏幕出错(因为.js模板不可用)。请帮我如果可能的话,如何在grails中的.js文件中使用remoteFunction

$(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'); 

      } 


     }); 

可能是我混合服务器端代码和客户端代码,与基本搞乱。提前致谢。

而不是使用remotefunction,我试着用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

你是不是想加载JSON数据或HTML的片段? – 2014-09-19 09:39:12

+0

感谢您的回应,我一直在尝试将一个日期值传递给控制器​​,但是调用本身没有发生。 – user3582387 2014-09-19 17:47:02

+0

好的,但您的控制器是发回JSON数据还是HTML片段?我问,因为获得这些结果的方法稍有不同。 – 2014-09-19 17:48:39

回答

0

我不认为你将能够使用Grails的AJAX在.js文件中标记库。

但是,添加到这些taglibs已被弃用,你不应该使用它们。由于这是不被认为是一个很好的做法

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还有更好的。

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. 
    } 
}); 
+0

扔这些细节的弹出窗口。感谢您的回复..我会尝试并回来.. – user3582387 2014-09-19 18:50:45

+0

我用上述,但仍然以某种方式保存和运行该项目时,它是不承认模板和我的屏幕出错(没有模板)。我需要使用一些东西来使Ajax可用..如果可能,请你帮我... – user3582387 2014-09-20 15:32:01

+0

eventClick:function(event){ \t \t \t var selectedDate = String(event 。开始); alert('madhu'); \t \t/* \t $就({ \t \t \t \t数据类型: 'JSON', \t \t \t \t URL: “$ {建立连结(控制器: 'preSechedule',动作: 'callProcess')}”, \t \t \t \t数据:{},//没有参数 \t \t \t \t成功: \t \t \t \t window.alert( “返回的数据是:成功”); \t \t \t \t错误: \t \t \t \t window.alert( “返回的数据是:误差”); \t \t \t \t //显示你的模态,或做任何你想要的。 \t \t \t \t \t \t \t \t}); */ – user3582387 2014-09-20 15:34:57

相关问题