2013-02-27 3 views
0

J'ai un formulaire "créer un utilisateur" qui doit vérifier si le nom d'utilisateur existe déjà. Pour cela, je fait une fonction onclick sur un bouton de démarrage ce script:Jquery poster une seule variable à PHP

$.ajax({ 
type: \"POST\", 
dataType: \"json\", 
url: \"test.php\", 
data: $('input[name=Username]').val(), 
contentType: \"application/json; charset=utf-8\", 
success: function(data){ 
alert('Items added'); 
}, 
error: function(e){ 
console.log(e.message); 
} 
}); 

Cependant, rien ne se passe, même pas le succès d'alerte indiquant! S'il vous plaît aidez-moi comment publier cette seule variable et comment obtenir le résultat de la page PHP en vérifiant l'existence du nom d'utilisateur.

+3

Où faire les '\ « 'viennent de –

+0

? Code Supprimer de l'événement onclick, créer une fonction et supprimer les évasions de ». – Ghigo

+0

Y a-t-il un message d'erreur enregistré sur la console? – Jrod

Répondre

2

Votre data a besoin d'une clé value qui est un objet, comme ceci:

data: {username: $('input[name=Username]').val())}, 

De cette façon, la valeur POST username sera créé.

1

vous devez assigner la variable à un élément qui peut être référencé dans le $_POST appel:

$.ajax({ 
    type: "POST", 
    url: "test.php", 
    data: {user:$('input[name=Username]').val()}, 
    success: function(data){ 
     alert('Items added'); 
    }, 
    error: function(e){ 
     console.log(e.message); 
    } 
}); 

Puis, en test.php, juste récupérer $_POST['user'].

Edition - Je retire contentType (merci Rocket). J'ai aussi enlevé le dataType, parce que vous n'êtes pas obligé de le faire que si vous définissez correctement l'en-tête sur test.php:

header('Content-type: application/json'); 
+0

Perdez la 'contentType', c'est incorrect ici. –

+0

enlevé' contentType ', il était juste là de la copier/coller également supprimé' dataType. json' et informé comment configurer correctement l'en-tête de test.php – PlantTheIdea

+0

Garder 'dataType:.. « json'' est bien, juste au cas où –

2
  1. Ne pas échapper à des bits aléatoires de JS. Débarrassez-vous des \ s
  2. Il est beaucoup plus facile de traiter les données soumises si vous formatez à l'aide d'un formulaire standard type MIME plutôt que de simplement envoyer une seule chaîne brute. data: { keyName: $('input[name=Username]').val() }
  3. Vous n'envoyez pas de texte JSON. Débarrassez-vous de contentType: etc etc. (Laisser dans cela peut faire PHP aller "Ce n'est pas des données de formulaire, je ne peux pas remplir $_POST avec"). Laissez jQuery déterminer le type de contenu qu'il envoie.

Ensuite, vous pouvez accéder à $_POST['keyName'] dans votre PHP.