Comment dois-je appeler une fonction php à partir de javascript onclick() de l'événement?
Par exemple, j'ai une fonction php:
function DeleteItem($item_id)
{
db_query("DELETE FROM {items} WHERE id=$item_id");
}
Puis, j'ai quelque chose comme ce qui suit:
<html>
<head>
<script type="text/javascript">
function DeleteItem($item_id)
{
alert("You have deleted item #"+$item_id);
}
</script>
</head>
<body>
<form>
Item 1
<input type="button" value="Delete" onclick="DeleteItem(1)" />
</form>
</body>
</html>
Je veux être en mesure d'appeler la fonction PHP DeleteItem() de la fonction javascript DeleteItem() afin que je puisse utiliser de Drupal db_query() de la fonction, donc je n'ai pas à essayer d'établir une connexion à la base de données à partir de javascript.
Quelqu'un aurait-il des suggestions sur la façon dont cela pourrait être fait? P. S. je comprends que le processus PHP côté serveur et javascript processus sur le côté client, donc s'il vous plaît pas de réponses en disant cela. Il y a obtenu d'être une sorte de truc qu'on peut faire pour avoir ce travail. Ou peut-être il ya une meilleure façon de faire ce que je suis en train d'accomplir.
- Je vous diriger à cette question: stackoverflow.com/questions/2034501/how-does-php-work/...
- Êtes-vous sûr de vouloir faire cela? Vous êtes en permettant à tout client, n'importe où, pour supprimer un élément dans votre base de données. Pas une bonne idée.
- En fait, je ne VEUX vraiment pas faire cela, mais je vais avoir des problèmes pour faire ce que je suis ce que je suis en train de faire. Drupal a 'Panneaux' et 'Onglets' modules. Vous pouvez mettre les onglets dans votre panneau pour tout ou partie du contenu au sein de votre panneau. Cependant, il n'existe aucun moyen de diriger l'utilisateur vers un onglet spécifique par l'intermédiaire d'un lien ou d'un appel.
- Donc, si je veux supprimer ou, surtout, de modifier un élément dans une liste dans le 3e onglet je PEUX le faire, mais quand je fais l'appel à la page et de fournir les paramètres dans l'URL il me montre le premier onglet lorsque je recharge la page avec les paramètres au lieu de l'onglet que je veux. Ce qu'il fait en sorte que l'utilisateur doit cliquer sur la 3ème onglet de nouveau, ce qui est gênant pour eux.
- Peut-être une meilleure question est: "comment puis-je accéder de serveur-côté fonctionnalités à partir d'une page web sans la page de rechargement dans le navigateur?" AJAX est parfait pour cela.
- pourquoi serait-on en bas de voter à ma question? C'est une question légitime qui pourrait avoir une réponse définitive. Boiteux!
Vous devez vous connecter pour publier un commentaire.
Puisque vous êtes conscient que le processus PHP côté serveur et javascript processus sur le côté client, vous devez aussi comprendre que vous ne pouvez pas appeler un PHP "fonction" à partir de javascript. De votre côté client code peut rediriger vers une page PHP, ou invoquer un programme PHP à l'aide d'AJAX. La page ou le programme doit être sur le serveur, et il devrait faire beaucoup plus que juste une ligne que vous avez dans votre fonction. Il doit également vérifier l'authentification, l'autorisation, etc. Vous ne voulez pas n'importe quel script côté client, n'importe où pour appeler votre PHP.
Vous devez écrire un script PHP qui va exécuter la fonction. Pour l'appeler, soit:
XMLHttpRequest
(aka Ajax) pour envoyer la demandelocation.href
et retourner le code d'état HTTP204 No Content
à partir de PHPVous souhaitez utiliser ajax pour que.
Aussi, la connexion à la base de javascript est quelque chose que vous ne devriez même pas considérer comme une option - terriblement précaire.
Un exemple très simple:
vous ne pouvez pas appeler des fonctions PHP dans du JavaScript en soi. Comme @Christoph écrit vous avez besoin d'appeler un script PHP via une normale de la requête HTTP à partir de JavaScript à l'aide de la magie qui est connu comme l'AJAX (idiot acronyme signifie JS pouvez charger externe des requêtes HTTP à la volée).
Prendre un coup d'oeil à jQuery AJAX fonctionnalité sur la façon de toujours faire une requête HTTP via JS, voir http://docs.jquery.com/Ajax
Normal que toutes les règles de sécurité s'appliquent, c'est à dire assurez-vous de filtrer les données et de s'assurer qu'il est ce qu'on attend (le $item_id dans votre exemple). Gardez à l'esprit il n'y a rien pour arrêter quelqu'un manuellement l'accès à l'URL demandée par votre JS.
Tout d'abord, l'utilisation de jQuery.
Ensuite, votre code devra être quelque chose comme: