Je dois remplacer le contenu d'un div dans ma page par le résultat html d'un appel ajax. Le problème est que le html a quelques scripts nécessaires et il semble que la fonction jquery html() les raye, J'ai besoin de filtrer la réponse et obtenir seulement une div spécifique.jquery html() supprime les balises de script
Je pense à une solution de contournement qui consiste à extraire toutes les balises de script de la réponse ajax, puis à les ajouter au DOM mais j'ai du mal à le faire.
Voici mon code;
$('a.link-vote').live('click',function(){
var idfeedback = $(this).attr('id').split('-')[1];
var href = $(this).attr('href');
$('.feedback-' + idfeedback + '-loader').show();
$.ajax({
type: "POST",
url: href,
success: function(response){
var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
$('#feedback-'+ idfeedback).html(x);
}
});
return false;
});
J'ai trouvé ce vieux sujet: jQuery - script tags in the HTML are parsed out by jQuery and not executed
mais est une conclusion. J'ai essayé les solutions proposées mais aucune d'entre elles ne fonctionne.
EDIT: Je semble avoir trouvé une solution de contournement basée sur ce vieux sujet, mais ce n'est pas joli;
var dom = $(response);
// var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
//$('#feedback-'+ idfeedback).html(x);
$('#feedback-'+ idfeedback).html(dom.find('#feedback-'+ idfeedback).html());
dom.filter('script').each(function(){
var obj = $(this);
$('#feedback-'+ idfeedback + ' .feedback-comments').append(obj);
});
Il doit y avoir un moyen facile.
mange des bébés, haahaha! –
'.innerHTML' fonctionne ok mais le script à l'intérieur du nouveau contenu ne s'exécute pas ... une idée? – agpt
@Aman, s'il vous plaît postez une question avec une explication de ce que vous essayez de faire, ce que vous avez essayé, et comment il échoue. – eyelidlessness