2014-09-19 60 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

相關問題