2017-10-18 3 views
0

J'essayais de faire un appel ajax et d'afficher une partie html dans une classe div. Pour cela j'ai utilisé la manière suivante.Le script ne se charge pas après une réponse ajax

$.ajax({ 
    type: "get", 
    url: "{{url('searchByCheckbox')}}", 
    dataType: 'html', 
     success: function(html) 
     { 
      $(".infinite-scroll").html(html) 
     } 
}); 

Mais le problème est qu'il ya un script dans cette partie html que je voulais charger quand je fais d'abord ajax appeler ce n'est pas chargé, mais pour le second il est chargé le script. suppose que la réponse HTML comme ceci:

<script> 
    alert() 
</script> 
// html 

Comment puis-je faire fonctionner? J'ai mis le script au-dessus de la page html que j'obtiens en réponse.

(ceux qui marquent la question en double devrait lire au moins ce que je veux et ce qu'ils voulaient)

+0

Avez-vous essayé '$ (". Infinite-scroll "). Text (html)'? – ricky

+1

@ricky, qui affichera le HTML en texte brut. – Mouser

+0

Obtenez-vous votre requête HTML? Pour autant que je comprenne, vous obtenez une réponse, mais 'script' dans votre réponse HTML ne fonctionne pas, ai-je raison? – Krusader

Répondre

0

Je suis sûr que l'erreur se produit à cause du script, parce que vous fermez la balise </script> à l'intérieur du html

La meilleure solution est de renvoyer les données de votre appel ajax comme json

Pour ce faire, vous devez:

1- ajouter un dataType à votre paramètre ajax comme ci-dessous:

$.ajax({ 
    type: "get", 
    dataType: "json", 

2- Dans le fichier php traitant l'appel ajax, vous devez renvoyer les valeurs en json comme suit:

Supposons que vous êtes en train de faire ce qui suit:

echo $html 

Vous devez changer pour correspondre au-dessous:

$retArr = array(
    "html"  => $html, //Your html code without the javascript function 
    "jsFunc" => $jsFunc //Your java script function parameters 
) ; 
echo json_encode($retArr) ; 

Et puis votre ajax success doit être comme ci-dessous:

success: function(data) 
    { //You can access all the object parametes by calling the object name `data` followed by a dot `.` and then by the parameter key 
     data.jsFunc // Your javascript function params 
     $(".infinite-scroll").html(data.html) ; 
    }