2012-11-11 4 views
-2

J'ai 2 fichiers dans mon répertoire: un est js/form-validation-reg.js et un est HTML/registeruser.php. Le fichier javascript valide un formulaire d'un autre fichier html que j'ai déjà vérifié; toutes les valeurs sont passées tout le chemin jusqu'à l'ajax mais les valeurs ne semblent pas être envoyées à registeruser.php pour être envoyées dans ma base de données.Jquery ajax pas appel ne fonctionne pas

form-validation-reg.js: 
//data string creation 
var dataString = 'name='+ name 
        + '&pass=' + pass  
        + '&nationality=' + nationality 
        + '&contactno=' + contactno 
        + '&dateofbirth=' + dateofbirth 
        + '&eaddress=' + eaddress 
        + '&address=' + address 
        + '&gender=' + gender 
        + '&monthlysub=' + monthlysub;  
     //ajax 
     $.ajax({ 
     type:"POST", 
     url: "HTML/registeruser.php", 
     data: dataString, 
     success: success(), 
      error:function(jqXHR, textStatus, errorThrown){ 
           alert("Error type" + textStatus + "occured, with value " + errorThrown); 
          } 

    }); 
}); 

aucune erreur est affichée et j'ai aussi essayé de placer l'URL comme « ../HTML/registeruser.php », mais il ne fonctionne toujours pas. fichier PHP (REMARQUE: j'ai aussi fait des détails que mes bases de données sont correctes.):

$name = stripslashes(strip_tags($_POST['name'])); 
$pass = stripslashes(strip_tags($_POST['pass'])); 
$nationality = stripslashes(strip_tags($_POST['nationality'])); 
$contactno = stripslashes(strip_tags($_POST['contactno'])); 
$dateofbirth = stripslashes(strip_tags($_POST['dateofbirth'])); 
$eaddress = stripslashes(strip_tags($_POST['eaddress'])); 
$address = stripslashes(strip_tags($_POST['address'])); 
$gender = stripslashes(strip_tags($_POST['gender'])); 
$monthlysub = stripslashes(strip_tags($_POST['monthlysub'])); 


$mysqli = new mysqli("localhost", "root", "","testdb")or exit("Error connecting to the database."); 
$stmt = $mysqli->prepare("INSERT INTO user 
      (name, password, nationality, contactno, dateofbirth, email, address, gender, monthlysub) 
      VALUES (?,?,?,?,?,?,?,?,?)"); 
$stmt->execute(); 
$stmt->bind_param("sssssssss", $name, $pass, $nationality, $contactno, $dateofbirth, $eaddress, $address, $gender, $monthlysub); 
$stmt->fetch(); 
$stmt->close(); 
$mysqli->close(); 

Répondre

4

essayer:

success: success, 

au lieu de:

success: success(), 
+0

est le succès: le succès(), aussi, même les messages de succès montrent juste que n othing aller dans ma base de données –

0

Je ne sais pas si cela pourrait help, mais votre variable dataString a l'air de la construire pour aller dans une URL qui utiliserait get au lieu de poster. Il se peut que votre script php ne sache pas comment analyser ce qui lui est transmis, car il recherche plutôt les variables de publication. Puisque vous passez un mot de passe, vous ne voudriez pas l'utiliser pour des raisons de sécurité.

0

Vous devez appeler $ stmt-> bind_param avant le $ stmt-> execute();

S'il y a encore un problème, vous devez le casser vers le bas pour voir ce que vous est donné la question:

1) Assurez-vous que le Javascript est obtenir appelé. Mettez une alerte() dans votre Javascript et rechargez la page. Si l'alerte apparaît, vous y parvenez et vous pouvez exclure tout problème d'URL.

2) Si vous utilisez Firefox, installez firebug puis appuyez sur F12 et affichez la console. Vous verrez le HTML/registeruser.php s'appeler et vous pourrez également voir les paramètres qui sont envoyés et d'autres informations. Vous pouvez également le faire dans Chrome. Si l'URL est appelée et que vous recevez une réponse 200, il n'y a pas de problème et c'est une chose que vous pouvez exclure.

3) À ce stade, nous avons exclu le Javascript et l'appel Ajax. Nous nous concentrons maintenant sur la connexion à la base de données, puis sur la requête SQL. Après votre connexion sur registeruser.php, faites une déclaration select d'une table dont vous savez qu'elle a des enregistrements, faites-en l'écho pour vous assurer que vous avez définitivement une connexion et que vous êtes connecté à la bonne base de données.

4) Écho votre instruction SQL pour vous assurer qu'elle a tous les paramètres.

Par ailleurs, vous devriez également vérifier votre gestion des erreurs, au lieu d'utiliser la sortie que vous devriez vérifier l'erreur mysqli donc après alors le nouvel appel mysqli ajouter ceci:

if (mysqli_connect_errno()) { 
    printf("Error connecting to the database: %s\n", mysqli_connect_error()); 
    exit(); 
} 
0

Vous pouvez utiliser une bibliothèque qui fait cela, comme le font déjà http://phery-php-ajax.net automatiquement le pont entre jQuery et PHP automatiquement

phery.remote('registeruser', { 
'name': name, 
'pass': pass,  
'nationality': nationality, 
'contactno': contactno, 
'dateofbirth': dateofbirth, 
'eaddress': eaddress, 
'address': address, 
'gender': gender, 
'monthlysub': monthlysub, 
}); 
Phery::instance()->set(array(
    'registeruser' => function($data){ 
     $data = array_map('strip_tags', $data); 
     /* rest of mysql code */ 
     return PheryResponse::factory(); // do any DOM manipulation, redirect, etc 
    } 
))->process(); 
Questions connexes