将json从Action Class返回到ajax

时间:2016-03-05 08:51:40

标签: javascript jquery json ajax fullcalendar

我目前正在使用fullCalendar(jQuery插件)并且现在遇到了愚蠢的问题,但我无法克服它。

在日历页面加载中尝试从数据库填充事件详细信息。这是我的代码,

$('#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,如何将其返回给ajax。

请帮助我实现这一目标。

3 个答案:

答案 0 :(得分:1)

[jQuery Ajax] [1]使用dataType : 'json'来指定执行操作和结果时预期由success回调函数返回的数据类型,并返回响应从服务器。

  

dataType(默认:智能猜测(xmljsonscripthtml))

     

输入: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>

答案 1 :(得分:1)

你的ajax电话似乎没问题。只需要以适当的方式显示ajax响应。

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

答案 2 :(得分:0)

我的第一个猜测是为什么返回null?

return null;

只需返回json字符串:

return jsonString;