2013-05-31 3 views
-1

Ce qui suit est dans la tête de mon fichier html, dans les balises de script:Comment appeler une fonction PHP en utilisant JQuery/AJAX

$(document).ready(function(){ 
       $("#Submit").click(function(){ 
        var name = $("#name").val(); 
        $.ajax({ 
         url : "function.php", 
         type : "POST", 
         data : {"firstname":name}, 
         success : function(n){ 
          //more code here       } 
        }); 
       }); 
} 

Ceci est le formulaire HTML:

<div class="myForm"> 
       <input name="name" id="name" value="name" onfocus="if (this.value == 'Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Name';}" type="text" /> 
       <input type="button" value="Submit" id="Submit"> 
      </div> 

Voici mon PHP, enregistré dans un fichier appelé function.php:

<?php 
$con=mysqli_connect("test", "", "", "test"); 
// Check connection 
$name = $_POST['firstname']; 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"INSERT INTO customers (name) VALUES (" + $name + ")"); 

mysqli_close($con); 
?> 

La fonction prend un âge pour appeler, et rien est enregistré dans ma base de données. Je suis nouveau à JQuery/Ajax. Quelles sont mes options de débogage ici? Quel est le problème susceptible d'être?

+2

Vous publiez une variable nommée 'firstname' et récupérant une variable nommée' name'. Ils devraient correspondre. Vous pouvez aussi essayer 'mysqli_query (...) ou die (mysqli_error())' pour voir les erreurs mysql. – showdev

+0

Mettez en forme vos données: 'data: {firstname: name},' – tymeJV

+0

@showdev J'ai maintenant effectué cette modification. La fonction s'exécute beaucoup plus vite, mais il n'y a toujours pas de données dans ma table :( –

Répondre

2

Essayez ce code. J'ai édité votre code et ajouté PDO qui est la nouvelle approche pour se connecter aux bases de données .. Ceci est plus sûr et échappe automatiquement les données.

Vous avez eu beaucoup d'erreurs de syntaxe dans votre php. comme l'opérateur d'ajout de chaîne dans PHP est . pas +.

<?php 
$name = $_POST['firstname']; 
try { 
    // Prepare our connection string and execute it 
    $con = new PDO("mysql:host=".HOST.";dbname=".DBNAME, USER, PASS); 
} catch(PDOException $e) { 
    // Connection error jumps here 
    echo $e->getMessage(); 
} 
// Define our query here 
$query = $con->prepare("INSERT INTO customers (name) VALUES (:name)"); 
// Define our query data here. the name here maps to the :name in the query. 
$data = array("name" => $name); 
try { 
    // Try to execute our query 
    $query->execute($data); 
} catch(PDOException $e) { 
    // Insert error jumps here 
    echo $e->getMessage(); 
} 
?> 

Il suffit de mettre dans votre hôte, le nom de la base de données, l'utilisateur et passer dans les lieux mentionnés dans le code et vous êtes bon pour aller. Pour déboguer le code php, installez Firebug sur votre firefox et dans la page html ouvrez le firebug en cliquant avec le bouton droit de la souris sur la page et en sélectionnant Inspect element with firebug. ouvrir le panneau Net et là vous pouvez voir la demande en cours. voir la réponse et vous verrez toutes les erreurs probables sur votre page php.

Bonne chance!

Questions connexes