ajax pour et renvoyer le code html à afficher dans div

jQuery v 1.9.0

Lorsque le chargement de la page je suis de tir de deux fonctions (get_month() & get_todays_events()) et ceux de retour le calendrier et les événements d'aujourd'hui html.

Parfois lorsque j'actualise la page, il affiche les événements d'aujourd'hui deux fois et de ne pas afficher le calendrier(mois), comme illustré ci-dessous.

ajax pour et renvoyer le code html à afficher dans div
La moitié du temps il fonctionne très bien, comme on le voit ci-dessous:

ajax pour et renvoyer le code html à afficher dans div

Il n'y a pas d'erreurs dans la console de firebug. Il fonctionne très bien comme un stand-alone application, mais quand je l'incorporer dans Jasig de uPortal, il bousille.

Ensuite, j'ai essayé de décapage le html qui est envoyé à l'arrière de l'ajax postes et j'ai remarqué que le get_todays_events(); peut-être le coupable, mais je ne sais toujours pas ce qu'elle pourrait être.

Est-il quelque chose dans le code html qui peut être le déclenchement des choses ou si j'ai un retard sur le déclenchement de la fonction d'après le get_month(); les incendies?

$.noConflict();
jQuery(document).ready(function($) {
function get_month()
{
var url_month = jQuery("#days_for_month_url").attr("href");
var form_data = { ajax : '1' };
jQuery.ajax({
type: "POST",
dataType: "html",
url: url_month,
crossDomain: true,
data: form_data,
success: function( default_month_msg ) {
jQuery('#display-month').html(default_month_msg);
} //end success
}); //end ajax
//return false;
}
function get_todays_events()
{
var url_todays_events = jQuery("#todays_events_url").attr("href");
var form_data = { ajax : '1' };
jQuery.ajax({
type: "POST",
dataType: "html",
url: url_todays_events,
crossDomain: true,
data: form_data,
success: function( default_month_msg ) {
jQuery('#display_todays_events').html(default_month_msg);
} //end success
}); //end ajax
//return false;
}
get_month();
console.log("display calendar");
get_todays_events();
console.log("display today's events");
jQuery(document).on('click', "a.view_events", function(e) {
e.preventDefault();
var date = jQuery(this).data('date');
//change if URL changes
var url_events = jQuery("#events_for_day_url").attr("href");
var form_data = {
year : jQuery(this).data('year'),
month : jQuery(this).data('month'),
day : jQuery(this).data('day'),
date : jQuery(this).data('date'),
ajax : '1'
};
jQuery.ajax({
type: 'POST',
dataType: 'html',
url: url_events,
data: form_data,
success: function( msg ) {
jQuery('#display-events').html(msg);
jQuery('#display-event_detail').html('');
jQuery('#display_todays_events').html('');
} //end success
}); //end ajax
return false;
}); //end on.click view-events
jQuery(document).on('click', "a.view_event_details", function(e) {
e.preventDefault();
var url_event_detail = jQuery("#event_detail_url").attr("href");
var form_data = {
event_id : jQuery(this).data('event_id'),
ajax : '1'
};
jQuery.ajax({
type: 'POST',
dataType: 'html',
url: url_event_detail,
data: form_data,
success: function( msg ) {
jQuery('#display-event_detail').html(msg);
jQuery('#display-events').html('');
jQuery('#display_todays_events').html('');
} //end success
}); //end ajax
return false;
}); //end on.click view_event_details
jQuery(document).on('click', "a.month_link", function(e) {
e.preventDefault();
jQuery('#display-events').html('');
var url_days_for_month = jQuery("#days_for_month_url").attr("href");
var form_data = {
month_url : jQuery(this).data('month_url'),
ajax : '1'
};
jQuery.ajax({
type: 'POST',
dataType: 'html',
url: url_days_for_month,
data: form_data,
success: function( msg ) {
jQuery('#display-month').html(msg);
jQuery('#display_todays_events').html('');
} //end success
}); //end ajax
return false;
}); //end on.click view-month
jQuery(document).on('click', "a.view_subscriptions", function(e) {
e.preventDefault();
var url_subscription = jQuery("#subscriptions_url").attr("href");
var form_data = {
ajax : '1'
};
jQuery.ajax({
type: 'POST',
dataType: 'html',
url: url_subscription,
data: form_data,
success: function( msg ) {
jQuery('#display-subscriptions').html(msg);
//jQuery('#display-subscriptions').toggle();
} //end success
}); //end ajax
return false;
}); //end on.click view-subscriptions
jQuery(document).on('click', "#update_subscriptions", function(e) {
e.preventDefault();
var url_update_subscription = jQuery("#update_subscriptions_url").attr("href");
var vals = []
jQuery('input:checkbox[name="calendar[]"]').each(function() {
if (this.checked) {
vals.push(this.value);
}
});
var form_data = {
ajax : '1',
calendar: vals,
};
jQuery.ajax({
type: 'POST',
dataType: 'html',
url: url_update_subscription,
data: form_data,
success: function( msg ) {
get_month();
jQuery('#display-subscriptions-update').html(msg).fadeOut(6000);
jQuery('#display-subscriptions').html('');
jQuery('#display-events').html('');
jQuery('#display_todays_events').html('');
} //end success
}); //end ajax
return false;
}); //end on.click view-subscriptions
}); //end document ready

Voici le code html qui est revenue sur le succès de la get_todays_events() la fonction

<h3>Today's Events</h3>
<p><a href="#" class="view_event_details" data-event_id="68">All About Heroin</a> - 12:30 pm</p>
<p><a href="#" class="view_event_details" data-event_id="67">African Storyteller - Ekow King</a> - 12:30 pm</p>
<p><a href="#" class="view_event_details" data-event_id="66">Men&rsquo;s Basketball vs. Columbia-Greene Community College</a> - 6:00 pm</p>

Mise à JOUR le: vérifié le net dans l'onglet firebug et examiné XHR, lors de l'utilisation dans uPortal, il mettrait le feu sur deux requêtes post et deux requêtes get. Les demandes ont été réaccorder 0 octet, mais les requêtes GET, de retour quelque chose. J'ai changé à l'OBTIENT, puisque je n'étais pas vraiment demander à l'utilisateur d'entrer des données, mais en cliquant sur un lien qui avaient des données déjà (que soit la date qu'ils voulaient afficher les événements d'), j'ai donc ajouté de la valeur à la date de l'URL que j'ai été en passant dans l'ajax requête get, puis il est retourné correctement à chaque fois.

  • vous n'avez pas donné tout le code de votre JS fonctions. ou ce qui se passe du côté du serveur, juste ce qu'il se retourné. pour nous aider nous avons besoin de ces détails. Utiliser Fiddler ou firebug pour voir ce qui est réellement obtenir retourné à partir de l'appel AJAX.
  • ajoutée oublié de l'ajouter à l'origine
  • serait-il possible d'obtenir le rendu complet de la page avant que ces appels sont faits, je dirais que quelque part dans votre formulaire à l'url erronée est placé.
  • Ce n'est pas une forme. J'utilise de l'ajax pour un contrôleur de la méthode appelée post_calendar() et post_todays_events(), qui retourne le code html. Il travaille la moitié du temps lors de l'utilisation dans uPortal, si vous êtes directement sur la page il fonctionne à chaque fois.
  • oui, mais vous utilisez jQuery("#events_for_day_url").attr("href") sélecteur pour obtenir la url pour l'AJAX, je ne pouvais supposer que vous avez un bug quelque part sur le contrôleur de côté le retour de la mauvaise URL. comme je l'ai dit utiliser Fiddler ou Firebug pour attraper ce qui est renvoyé au client
  • Quand j'ai commenté get_todays_events(); il s'affiche le calendrier seulement, à chaque fois, trop, de sorte que la fonction pourrait être le problème.
  • Nous avons besoin de voir le html de la page, avant les appels. Peut-être que l'affichage mois div est définie à l'INTÉRIEUR d'display_todays_events div ou vice-versa? Je suppose qu'ils doivent être définis les uns sur les autres, mais peut-être que vous avez oublié de fermer la balise div correctement.

InformationsquelleAutor Brad | 2013-02-05