Comment passer de jquery variable de drupal (ajax)
Je veux passer
var x = 10;
drupal/php $variable x sans rafraîchir la page.
Quelqu'un peut-il proposer?
Merci beaucoup pour la réponse.
En fait, je suis le développement de modules personnalisés pour le E commerce site(Drupal 6).
Sur la page produit, j'ai 4 attributs comme champ de texte (Largeur pouces, largeur pied, hauteur pouces, hauteur pied) En faisant le calcul je suis nouveau prix pour ce produit. Je n'ai que le calcul de j requête.
Maintenant je modifier "uc_add_to_cart_form" et ajouter 1 champ caché et obtenir jquery nouveau prix dans ce champ caché à l'aide de $_SESSION. Jusqu'à ce point, tout fonctionne bien.
Je veux enregistrer ce nouveau prix pour le produit nœud. Je ne suis pas capable de mettre ce nouveau prix de $noeud->prix.
Je suis à l'aide de uc_ajax_cart pour "Ajouter au panier".
Quelqu'un peut-il svp me suggérer comment puis-je procéder?
OriginalL'auteur Drupal_newbie | 2011-01-28
Vous devez vous connecter pour publier un commentaire.
De passer la variable de données à partir de JavaScript pour Drupal/PHP est une chose. De transmettre les informations à partir de Drupal/PHP à JavaScript est une autre chose. Je pense que vous vouliez dire, le premier dans votre question. Donc, je vais aller de l'avant et répondre à ça.
Passer des variables à partir de JavaScript pour Drupal/PHP
1) mettre en Œuvre un menu crochet. Vous pouvez le faire sur contribué ou le nouveau module personnalisé, cela dépend de ce que vous êtes en train de faire. C'est assez facile et simple, il est aussi bien documenté sur le site Drupal.
Examinons l'exemple ci-dessus.
$items['my_custom_callback/%']
$items est juste un tableau, et il peut être n'importe quel nom que vous voulez. Si l'URL de mon site est http://www.alexanderallen.name, puis
http://www.alexanderallen.name/my_custom_callback
serait la ressource que je voudrais appeler à partir de mon application JavaScript.Dans le tableau de la touche, le symbole de pourcentage, après le mot my_custom_callback est un espace réservé. C'est là que vous passerez vos données à partir de JS, PHP. Donc, si la valeur de la variable x est de 10, à l'appel de votre JQuery ressemblera à ceci:
http://www.alexanderallen.name/my_custom_callback/10
Lorsque vous chargez cette URL, Drupal trouverez votre menu crochet, et il va appeler la fonction que vous avez défini dans la page 'callback' clé du tableau. Dans ce cas, ce serait:
Là, vous pouvez faire ce que vous voulez avec la valeur de la variable x, comme le stockage dans la base de données.
Si vous avez été de mettre le menu crochet sur un module personnalisé, et le nom de votre module de example_module, le menu de crochet et de PHP personnalisé de rappel devrait ressembler à ceci:
Si vous voulais passer plusieurs variables à partir de JQuery pour Drupal/PHP, vous pourriez envisager de JSONifying en JavaScript, avant de passer à PHP. Rappelez-vous que si la charge utile est très grande, vous devriez envisager de JQuery .post() au lieu de .get(). Les fonctions PHP pour le décodage JSON sont ici php.net.
N'oubliez pas de return $éléments à la fin de la example_module_menu() fonction. Si vous voulais passer deux arguments ou plus à partir de JavaScript, PHP, puis l'élément de menu devrait ressembler à ceci:
Dans ce cas, je suis passé trois arguments pour PHP. 'page ' arguments' spécifie la partie de l'URL que vous souhaitez passer à PHP. Si vous deviez écrire
'page arguments' => array(0),
, l'argument de ta fonction PHP serait la chaîne my_custom_callback.2) Appeler le menu crochet à partir de votre code JS à l'aide de JQuery. JQuery fournit diverses méthodes AJAX. Celle que vous utilisez dépend du format des données de votre traitement et il est de taille, entre autres choses.
Très probablement, vous permettra d'utiliser une des deux méthodes JQuery. .post() ou .get(), en gardant à l'esprit que les requêtes post permettra une plus grande charge utile de données que les requêtes get. Donc, si la taille de la variable x = 10, vous pouvez coller avec .get(). Les deux .post() et .get() les méthodes sont un prolongement de la, ou de s'appuyer sur la .ajax() méthode. L' .ajax() la méthode est plus souple car il vous donne plus d'options, comme la possibilité de spécifier le format des données (JSON ou texte brut), envoyer un nom d'utilisateur/mot de passe avec votre demande, choisissez entre synchrone ou asynchrone des requêtes, et si le navigateur doit se cache ou non la demande.
C'est la signature de la méthode pour le JQuery .méthode get ():
jQuery.get( url, [ data ], [ callback(data, textStatus, XMLHttpRequest) ], [ dataType ] )
Si vous étiez sur le point d'envoyer vos données à l'aide de GET Drupal/PHP, en utilisant l'exemple ci-dessus, vous pourriez faire quelque chose comme ceci:
Notez que l'utilisation de l'argument données sur la .méthode get() est facultative, et dans mon exemple, j'ai omis, mais obtenir le même effet par la concaténation des données de passer à Drupal/PHP avec le reste de l'URL.
Si je devais courir, la demande HTTP GET ressemblerait à:
http://www.alexanderallen.name/my_custom_callback/alexander/10/20
et la réponse serait:
Hi Alexander, X + Z = 30
La transmission des données de Drupal JavaScript
Pour que vous auriez à utiliser des Comportements, je ne suis pas d'entrer dans les détails car je pense que ce n'était pas votre question, mais vous pouvez aller à la documentation officielle pour Drupal 6 comportements ici.
OriginalL'auteur amateur barista
Que vous devez savoir:
Le menu API:
http://api.drupal.org/api/drupal/includes--menu.inc/group/menu/7
Certains Drupal JSON fonctions (peut-être)
http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_json_encode/7
variable_set()
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/variable_set/7
Et API ajax de jQuery:
http://api.jquery.com/category/ajax/
Essentiellement, vous avez besoin pour créer un élément de menu que les délégués à une fonction de rappel (être prudent avec vos autorisations) et puis l'appeler avec un $.ajax(). Si vous avez besoin de faire quelque chose avec la réponse, voir la json_encode fonctionnalité.
Vous voudrez peut-être jeter un coup d'oeil ici pour voir quelques exemples de menu:
http://drupal.org/project/examples
Je pense qu'il y a un Drupal interface de l'API ajax de jQuery. Peut-être que quelqu'un puisse les commenter s'ils connaissent une meilleure façon.
OriginalL'auteur Rimian