2010-01-11 8 views
0

Je n'arrive pas à résoudre ce problème. J'ai besoin d'envoyer une requête POST au backend PHP. Il doit être le suivant:Options de publication jQuery

Array ([username] => 'username' [password] => 'password' [action] => 'login') 

J'ai une forme comme frontend et j'utilise .serialize() pour obtenir l'utilisateur et mot de passe. Mais comment puis-je ajouter l'action clé/valeur?

Pour l'instant je viens d'ajouter la chaîne manuellement comme "&action=login" mais je n'aime pas cette solution. Un autre problème est que je ne peux pas utiliser de plugins jQuery, seulement jQuery lui-même.

+0

Pouvez-vous poster le code où vous récupérez le nom d'utilisateur et mot de passe? (Html ​​et javascript) –

Répondre

0
$login = //your code; 
$yourarray =//your code here 
if (array_key_exists($login, $yourarray)) 
// your code here 
0

Vous souhaitez envoyer des données depuis jQuery? Essayez:

$.post("your/controller/url.php", {username:'myname', password:'mypassword',action:'login'}, function(data){ 
    //do something when answer from your php backend arrives 
},'json'); 

Dans votre backend php vous pouvez accéder comme usuall $ _POST, la réponse devrait être en JSON (pas obligatoire, mais je recommanderai)

1
var usr = $("[name='username']").val(); 
var pwd = $("[name='password']").val(); 
var act = $("[name='action']").val(); 

$.post("script.php", {username:usr, password:pwd, action:act}, function(rst){ 
    alert(rst); // alerts 'Thank you [username], your data has been received.' 
}, "html"); 

Et votre code pour script.php devrait être similaire à:

if ($_POST) { 
    echo "Thank you " . $_POST["username"] .", your data has been received."; 
} else { 
    echo "Nothing found."; 
} 
0

Je rencontre le même problème dans les applications AJAX. Il n'y a pas de façon élégante de le faire. J'utilise de cette façon:

<form id="foo"> 
    <input type="hidden" id="action" name="action" value="login" /> 
    <input type="text" id="username" .... 
... 
</form> 

De cette façon, vous n'avez pas besoin d'ajouter des chaînes manuellement.

0

Souhaitez-vous ajouter d'autres données à l'objet de données que vous envoyez? Vous pouvez essayer quelque chose comme ceci:

var data = form.serializeArray(); 
data.push({'action':'login'}); 

$.post("/url", data, function(){ callback goes here}, 'json');