web-dev-qa-db-fra.com

jQuery Ajax renvoie la page entière

J'ai une fonction jquery-ajax qui envoie des données à un script php et le problème est avec la valeur de retour, il retourne la page entière au lieu d'une seule valeur.

Merci pour votre temps et votre aide.

$("#ajaxBtn").click(function(){
  var inputText = $("#testText").val();

  $.ajax({ type: "POST",
    url: "index.php",
    data: "testAjax="+inputText,
    dataType: "html",
    success: function(html){
      alert(html);
    }
  });
});         
23
Sophia Gavish

Voilà comment ça fonctionne. Vous demandez index.php via AJAX, vous obtiendrez donc le contenu de index.php sont.

Si vous voulez une valeur particulière, créez une nouvelle page PHP qui ne produit que cette valeur, et demandez plutôt le contenu de cette URL.

36
ceejayoz

Donc, quand vous avez ceci sur votre index.php Au début?:

<?php 
   if (isset($_POST["testAjax"])) { 
       echo $_POST["testAjax"]; 
   } 
?>

Si ce script génère un texte supplémentaire, cela sera bien sûr également reçu par l'appel Ajax. Vous pouvez mettre exit() après l'écho pour empêcher le traitement du script:

if (isset($_POST["testAjax"])) { 
    echo $_POST["testAjax"];
    exit();
}

Utilisez également dataType: 'text' Car la valeur que vous renvoyez n'est évidemment pas HTML.


Ou, comme d'autres le suggèrent, créez une nouvelle page chargée de traiter la demande Ajax. Si vous faites plus que simplement sortir la valeur reçue (c'est-à-dire des opérations plus complexes), vous devez le faire de toute façon.

13
Felix Kling

Sophia, Dans votre cas, vous ne devez pas envoyer vos données vers un fichier php qui, s'il est consulté par un navigateur Web, affiche une page de site Web. Vous devez envoyer vos informations dans un fichier php qui ne renvoie que les données que vous souhaitez voir renvoyées.

Donc, au lieu de "index.php", créez un fichier appelé quelque chose comme "my-ajax-script.php". Ce fichier doit inclure tous les fichiers "include ()" nécessaires pour se connecter à la base de données et à vos fichiers de fonction php (c'est-à-dire: pour nettoyer les données POST). Ensuite, le fichier doit avoir le code qui traite les données POST, et l'écho des données complètes avec quelques balises html. Ces données seront insérées dans votre DOM existant (balisage html).

6
superUntitled

Dans mon cas, toute personne ayant le même problème essaie d'utiliser

require_once au lieu de require dans votre fichier bootstrap php pour empêcher le rendu d'une page entière une deuxième fois dans le système.

0
Sophie cai