Passer ou non des paramètres à une page php

Signaler
Messages postés
24
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
-

6 réponses

Messages postés
24
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
11 mars 2010

J'ai dû faire une boulette, désolé je recommence :

Bonjour,
je voudrais pouvoir appeler une page php en lui donnant des paramètres uniquement si j'en ai en entrée.Voilà mon code, ça va être plus clair :

function ouvrePopup(page, identr, idaffaire, idrole, typerole) {
try {
if(arguments.length==5)//s'il y a 5 paramètres
var param="identr:'"+identr+"', idaffaire:'"+idaffaire+"', idrole:'"+idrole+"', typerole:'"+typerole+"'";
else
var param=NULL;
new Ajax.Request(page, {
parameters: {param},
onSuccess: function(transport) {


Le problème, c'est que ça ne passe pas...
Cela vient de ma variable param, car si je mets "parameters:{}", tout fonctionne !
Est-ce que vous auriez une idée pour résoudre ce problème ?
Merci.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
Bonjour,

var param;
if(arguments.length==5)//s'il y a 5 paramètres

            param="identr:'"+identr+"', idaffaire:'"+idaffaire+"', idrole:'"+idrole+"', typerole:'"+typerole+"'";

        else

            param="";

Cordialement [mon Site] [M'écrire] Bul
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
Bonjour il existe plusieurs solution:
la première passer par l'attribut parameters de Ajax.Request de prototype:
var _params = (arguments.length==5) ? "identr:"+identr+"&idaffaire="+idaffaire+"&idrole="+idrole+"&typerole='"+typerole : "";

 new Ajax.Request(page, {

            parameters: _params,

            onSuccess: function(transport) {

sinon (ça revient au même)
var page = (arguments.length==5) ? page + "?identr:"+identr+"&idaffaire="+idaffaire+"&idrole="+idrole+"&typerole='"+typerole : page;
 new Ajax.Request(page, {

       onSuccess: function(transport) {
        }
      }
);

ça devrait fonctionner. A toi de choisir la bonne ;o)
[o-_-o]
Messages postés
24
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
11 mars 2010

Merci pour ces réponses, mais ça ne marche pas tout à fait.

En faisant des "&machin=truc", je suis obligé de remplacer les $_POST par $_GET sur mes pages php, ce qui ne m'arrange pas vu que je utilise cette même page de partout, je devrais tout changer :/

@Bul3 : j'avais déjà essayé la chaine vide, apparemment ça ne marche pas si je fais un parameters:{ } avec une chaine vide dans les accolades.

Est-ce qu'il y a encore d'autres solutions ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>ça ne marche pas si je fais un parameters:{ }
regarde ce que dis zobibol

new Ajax.Request(page, {
            parameters: _params,                       // pas de { }

>>En faisant des "&machin=truc", je suis obligé de remplacer les $_POST par $_GET sur mes pages php,
si tu passes les paramètres dans l'url ( dans page )
pas dans param

@+
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
En effet, les tests que j'ai mené s'appuies sur des get et non des post
Donc, en théorie et en pratique aussi ou alors uniquement sur mon poste (avec un E) moi ça fonctionne par le passage dans parameters.
ci-joint mon source de test:
html :
<html>
    <head>
        <script language="JavaScript" src="./prototype.js" ></script>
        <title></title>
        <script>
            function testMe(){
                var _param = ( $("test").value.length>0) ?"hello=from world&toto=coincoin"  : null;
                var page ="test.php";
                new Ajax.Request("test.php",{
                        parameters:_param,
                        method:'GET',
                     onSuccess: function(transport) {
                         alert (transport.responseText);
                     }
                });
            }
        </script>
    </head>
   
       
       
   
</html>

php:
<?php

    if ( isset($_GET["hello"])){
        echo $_GET["toto"];
        return;
    }
    else{
    echo $_GET["hello"];
    }
?>

si le champ est renseigné, rien ne s'affiche ou plutôt une popup ne contenant rien s'affiche sinon, "coincoin" s'affiche dans la popup.

[o-_-o]