8
votes

JQuery charge () et variables PHP

Si je charge une page PHP avec jQuery .charger (fichier.php), le fichier fourni peut-il utiliser les variables PHP définies sur la page qui appelait la charge ()?


1 commentaires

Hi @ user1091856 - Bienvenue. C'est une bonne pratique d'accepter une réponse si cela fonctionne pour vous (pas seulement cette question, mais une quatre de vos questions précédentes). Tchin Tchin!


6 Réponses :


0
votes

Variables Portée dans le script php chargé par JavaScript est différent de la page chargée du script php , de sorte que la réponse est donc non.

Mais vous pouvez définir des variables globales ou utiliser des variables super globales comme ( $ _ obtenir , $ _ post , etc.) pour obtenir ce que vous voulez.


3 commentaires

Vous pouvez définir les variables passées par JavaScript dans la page en utilisant de manière dynamique PHP.


@Watermarkstudios Variables passées par JavaScript est différente de ce que OP demande: Si le fichier fourni peut utiliser les variables PHP définies sur la page qui a appelé la charge () .


Vous pouvez les utiliser exactement comment le kocheran tk décrit (bien que JSON_ENCODE () soit fortement recommandé). Vous avez raison que JavaScript ne puisse accéder directement à des variables PHP en raison de la séquence de chargement dans le cycle de réponse, mais d'ajouter une ligne de php pour définir une variable JavaScript avec la même valeur que la variable PHP n'est pas inouïe, ni Est-ce une mauvaise pratique à moins que les valeurs des variables PHP soient sensibles. L'utilisation de variables de session serait probablement la meilleure si des données sensibles sont un problème.



19
votes

Non, vous devez transmettre les variables que vous souhaitez utiliser sur votre fichier fichier.php : xxx

et ensuite vous pouvez obtenir ceux de votre fichier.php : xxx

S'il y a beaucoup de variables, utilisez la méthode postale: xxx

puis obtenir les variables dans fichier.php: xxx


2 commentaires

Cela fonctionne aussi ... Je ne voudrais pas remplacer le 'fichier.php? Var1 = xyz & var2 = xyz & var3 = xyz' avec 'file.php? Var1 = {$ xyz} & var2 = {$ xyz} & var3 = {$ xyz} ' si vous utilisez des variables remplacées à partir du fichier PHP actuel. Encore une fois, toute la ligne devrait être échoée à partir de balises PHP.


J'apprécie beaucoup mieux cette méthode puisqu'il utilise la fonction de chargement de chargement .



0
votes

Vous devrez transmettre ces variables au fichier PHP chargé via la fonction. chargée de la fonction.

Exemple: xxx

Les variables définies dans le fichier PHP actuel seraient Faites partie du JavaScript qui charge le nouveau fichier PHP.


1 commentaires

Bien sûr, cette ligne devrait être résolue à partir de balises PHP.



6
votes

Oui, utilisez le paramètre de données, voir http://api.jquerer.com/load/:

$_POST['key1']
$_POST['key2']


1 commentaires

Il s'agit d'une solution propre, mais gardez à l'esprit que si vous souhaitez utiliser des variables définies dans le fichier PHP actuel, vous devez échanger les valeurs avec les variables PHP résonnées à partir de balises PHP.



14
votes

Vous êtes mal compris que les choses fonctionnent.

  • PHP fonctionne avant em> toute réponse du navigateur est émise au client et que tous les codes sont exécutés sur le serveur em>. Les variables déclarées dans votre fichier PHP sont détruites après la course du code PHP; Ils "disparaissent". Li>
  • JavaScript exécute après em> la réponse du navigateur a commencé et que tout code fonctionne sur le client em>. En "chargement", le résultat de sortie du fichier PHP, vous n'obtenez aucun accès aux variables de PHP, seule la sortie. LI> ul>

    Si vous souhaitez transférer certaines variables de PHP à JavaScript, vous pouvez déménager une sortie dans JSON A> Dans votre script PHP, comme: P>

    $.getJSON("test.php", function(result) {
        console.log(result[0].myVariable);
    });
    


4 commentaires

J'aime votre explication claire de pourquoi Cela ne fonctionnera pas et c'est Wny j'ai suscité la réponse. Mais votre conseil pour générer JSON avec des déclarations echao est effrayante; C'est pourquoi JSON_ENCODE () existe.


Droite, mes excuses. J'essayais juste de rendre assez facile à comprendre. Cela fait longtemps que j'ai utilisé PHP, et je n'ai pas eu dans le passé de sérialiser Json à partir de PHP, alors mon mauvais.


À peu près sûr, je connais la réponse, mais un appel associatif fonctionne aussi avec cela, non? console.log (résultat ['myvariable']); ?


Pourquoi y a-t-il deux matrices et je voudrais juste séparer plusieurs variables avec une virgule?



0
votes

Le deuxième argument (paramètres) de la fonction de chargement de JQuery doit être un objet ou une fonction de rappel, mais pourrait également être une chaîne vide. Selon cela, la charge envoie des postes ou obtenez des demandes.

J'avais l'idée de basculer automatiquement entre Get and Post, (par exemple, si le jeu de cookies), car obtenir est plus rapide et que la cache est plus rapide, et la poste est plus sauvegarde. P>

C'est pire pour écrire la fonction de charge, y compris le contenu à l'intérieur de la fonction de rappel deux fois plus que pour écrire quelque chose comme celui-ci: p>

//get
var url="cache_dir/my_bag.html";
var params="";
if(document.cookie){
  //post
  url="post.php";
  params="{my:bag}";
  }
$(selector).load(url,params,function(){
...

  });


0 commentaires