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.
3 réponses
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);
}
});
}
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
ouhtml
))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>
Ma première supposition est pourquoi retourner null?
return null;
Renvoyez simplement la chaîne json:
return jsonString;
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.