2016-03-05 84 views
0

我目前正在使用fullCalendar(jQuery插件),現在仍然陷入愚蠢的問題,但我無法克服它。將json從Action類中轉換爲ajax

嘗試在日曆頁面加載時從數據庫填充事件詳細信息。這裏是我的代碼,

$('#calendar').fullCalendar({ 
      defaultDate: '2016-03-12', 
      editable: true, 
      eventLimit: true, // allow "more" link when too many events 
      eventSources: [ 
        getEvents() 
        ] 
     }); 

     function getEvents(){ 
      alert("Inside get Events"); 

      $.ajax({ 
       url : "/FullCal/eventDetails.do", 
       dataType : 'json', 
       success : function(data){ 
        alert(data) 
       } 
      }); 
     } 

正在使用Struts框架,這裏是我的動作映射,

<action path="/eventDetails" type="com.struts.action.CalendarInviteAction" > 
      <forward name="success" path="/Calendar.jsp" /> 
     </action> 

我的動作類有JSON格式的事件細節數據。我的問題是如何將json數據寫入ajax響應(簡單來說,如何將json數據返回給ajax調用)。這裏是我的動作類修訂

public ActionForward execute(ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response) throws Exception{ 

     System.out.println("TEsting inside getEventDetails"); 

     ArrayList<EventForm> arr = new ArrayList<EventForm>(); 

     arr.add(new EventForm("HandOff Meeting" , new Date(), new Date(),"Meeting at HandOffBridge")); 

     Gson gson = new Gson(); 
     String jsonString = gson.toJson(arr); 

     response.getWriter().write(jsonString); 

     return null; 
    } 

jsonString包含JSON格式eventDetails,怎麼這回阿賈克斯。

請幫我實現這一點。

回答

1

你的Ajax調用似乎罰款。只需要以適當的方式顯示ajax響應。

events: function(start, end, timezone, callback) { 
    $.ajax({ 
    url : "/FullCal/eventDetails.do", 
    dataType : 'json', 
    success : function(data){ 
     callback(data); 
    } 
    }); 
} 
1

A dataType : 'json'被[jQuery Ajax] [1]用於指定數據類型,該數據類型在執行操作和結果時將返回success回調函數,並返回從服務器返回的響應。

dataType(默認:智能猜測(xmljsonscript,或html))

類型:String

的類型,你期望從服務器返回的數據。如果沒有指定,jQuery將嘗試根據響應的MIME類型推斷它(XML MIME類型將生成XML,在1.4中JSON將生成一個JavaScript對象,在1.4腳本中將執行該腳本,而其他任何東西都將作爲字符串返回)。

該URL應該正確指向動作映射。假設它將在默認名稱空間中,否則您應該修改URL和映射以添加namespace屬性。

<script type="text/javascript"> 
    $(function() { 
    $("#dialog-form").dialog ({ 
     autoOpen: true, 
     height: 500, 
     width: 750, 
     modal: true, 
     buttons : { 
     "Search" : function() { 
      $.ajax({ 
      url : '<s:url action="part" />', 
      success : function(data) { 
       //var obj = $.parseJSON(data); 
       var obj = data; 
       alert(JSON.stringify(obj)); 
      } 
      }); 
     } 
     } 
    }); 
    }); 
</script> 
+0

感謝您的迴應Kishnan。我已在帖子中更新了我的操作類代碼。我想將jsonString返回給ajax。請看看並幫助我。 – Krupa

+0

我已添加新的答案,請嘗試語法代碼。,謝謝 –

+0

感謝您的回覆。我想從Action類返回字符串到ajax調用。基於我的理解,如果我使用的數據,你剛纔提到它只是添加到ajax請求。如果錯誤請更正 – Krupa

0

我的第一個猜測是爲什麼返回null?

return null; 

只返回JSON字符串:

return jsonString; 
+0

由於這是一個ajax調用,只需返回null以便struts不會採取任何進一步的操作。 – Krupa