2010-09-22 4 views
1

Je suis très nouveau pour jQuery et AJAX.Ajax avec jQuery

j'ai lu un peu de l'API fournie par jquery sur leur site web qui a dit:

Exemple: alerte sur les résultats de la demande test.php (HTML ou XML, en fonction de ce qui a été retourné). Maintenant, je voudrais savoir exactement comment test.php retourne des données. Je veux dire, quelqu'un pourrait-il fournir un échantillon "test.php" ici

Merci! : D

Répondre

3

Vous pouvez simplement renvoyer une chaîne simple. Quelle que soit la sortie est du paramètre d'URL sera capturé par la méthode ajax particulière que vous utilisez:

<?php echo 'this is a test'; ?> 

Si vous voulez retourner une structure plus complexe (comme JSON), vous pouvez faire:

<?php 

$data = array('foo' => 'bar'); 
echo json_encode($data); 

?> 

et sur le client:

$.post("test.php", function(json){ 
    alert("Data Loaded: " + json.foo); 
}, "json"); 
+0

donc, quel que soit fait l'écho, les données sont renvoyées, est-il? – Anant

+0

Vous demandez le contenu de l'URL (et des en-têtes), donc oui. – Harmen

+0

Les fichiers PHP ne renvoient pas de données - ils produisent des pages. La sortie d'un fichier PHP est juste comme un fichier texte - vous pouvez remplacer 'test.php' par' test.txt' et mettre tout ce que vous voulez dans le fichier texte. – Skilldrick

1

test.php pourrait ressembler à ceci:

<tag>Data!!!</tag> 

N ° <?php nécessaires.

Si vous utilisez JSON (ce qui est un bon choix pour beaucoup de choses), vous pouvez créer un objet PHP ou un tableau, puis faire:

<?php echo json_encode($my_object); ?> 
1
<?php echo 'return data'; ?> 

Ce qui se passe est que le navigateur fera une demande à l'URL donnée, tout comme n'importe quelle autre requête Web, à l'exception que le navigateur ne rend pas le résultat; il le remet à vous afin que vous puissiez faire avec ce que vous souhaitez.

Pour retourner des objets php complexes comme des objets JSON, pour votre javascript pour interagir avec, consultez json_encode()

1

Disons que si vous avez un code dans test.php

<?php 
echo "test data from test.php" 
?> 

Le message est passé à la variable de données de javascript et sera finalement averti.

Quelques liens utiles

Voici l'exemple et simple application

index .php

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title><!-- Insert your title here --></title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 

<script type="text/javascript"> 

    function register(){ 
     $.ajax({ 
      type: "POST", 
      url: "submit_data.php", 
      data: "username=" + document.getElementById("username").value + 
        "&email=" + document.getElementById("email").value, 
      success: function(html){ 
       $("#response").html(html); 
      } 
     }); 

     } 

    </script> 
</head> 
<body> 
    <form action="" method="post"> 
      <p> 
      <label for="name">Name:</label><br /> 
      <input type="text" name="username" id="name" size="25" /> 
      </p> 
      <p> 
      <label for="email">Email:</label><br /> 
      <input type="text" name="email" id="email" size="25" /> 
      </p> 
      <p> 
      <input type="button" name="submit" id="submit" value="Subscribe" onclick="register()"/> 
      </p> 

    </form> 
    <div id="response"> 
     <!-- Our message will be echoed out here --> 
    </div> 
</body> 
</html> 

submit_data.php

<?php 

     // Variables 

       $db_host = 'localhost'; 
       $db_user = 'user'; 
       $db_pass = 'pass'; 
       $db_name = 'db'; 

     $Username = $_POST['username']; 
     $Email = $_POST['email'];  

     // DB 

     $connect = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); 
     $connection = $connect; 

     mysql_select_db($db_name, $connect) or die(mysql_error()); 

     // Inserting into DB 

     $qInsertUser = mysql_query(" INSERT INTO `database` (`id`, `username`, `email`) 
            VALUES (``, `$Username`, `$Email`) 
            "); 

     if ($qInsertUser){ 
      echo "You are now subscribed to our newsletter. Thank you!"; 
     } else { 
      echo "Error!"; 
     } 

    ?>