Je travaille actuellement sur fullCalendar (plugin jQuery) et maintenant coincé avec un problème stupide, mais je n'ai pas pu le surmonter.

Essayer de remplir les détails de l'événement à partir de la base de données lors du chargement de la page Calendrier. Voici mon code,

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

J'utilise le cadre Struts et voici mes mappages d'action,

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

Et ma classe d'action a les données de détails de l'événement au format JSON. Ma question est de savoir comment écrire les données json dans la réponse ajax (en termes plus simples, comment renvoyer les données json à l'appel ajax). Voici ma classe d'action MISE À JOUR

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 contient eventDetails au format JSON, comment le renvoyer à ajax.

Veuillez m'aider à y parvenir.

0
Krupa 5 mars 2016 à 11:51

3 réponses

Meilleure réponse

Votre appel ajax semble correct. Il suffit d'afficher la réponse ajax de manière appropriée.

events: function(start, end, timezone, callback) {
  $.ajax({
    url : "/FullCal/eventDetails.do",
    dataType : 'json',
    success : function(data){
      callback(data);
    }
  });
}
1
Chintan Mirani 7 mars 2016 à 06:29

Un dataType : 'json' est utilisé par [jQuery Ajax] [1] pour spécifier un type de données qui devrait être renvoyé par la fonction de rappel success lorsque l'action et le résultat sont exécutés, et une réponse renvoyée par le serveur .

dataType (par défaut: Intelligent Guess (xml, json, script ou html))

Tapez: String

Le type de données que vous attendez du serveur. Si aucun n'est spécifié, jQuery essaiera de le déduire en fonction du type MIME de la réponse (un type XML MIME produira du XML, en 1.4 JSON produira un objet JavaScript, en 1.4 le script exécutera le script, et tout le reste sera retourné sous forme de chaîne).

L'URL doit pointer correctement vers le mappage d'action. Supposons qu'il se trouve dans l'espace de noms par défaut, sinon vous devez modifier l'URL et le mappage pour ajouter l'attribut 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
kishan Radadiya 5 mars 2016 à 08:56

Ma première supposition est pourquoi retourner null?

return null;

Renvoyez simplement la chaîne json:

return jsonString;
0
Jai 5 mars 2016 à 09:32