JeuWeb - Crée ton jeu par navigateur
[résolu] Javascript, envoie de paramètres - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [résolu] Javascript, envoie de paramètres (/showthread.php?tid=3084)



[résolu] Javascript, envoie de paramètres - P0ulp0r - 22-09-2008

Yop tous,

Alors j'ai un léger problème avec un envoie de paramètre en JS.
M'étant récemment mis au javascript pour faire du Ajax, je dois actuellement lutter sur un problème d'envoi de paramètre pour un fichier php.

Voici le code Javascript, sachant que les paramètres sont bien reçus, j'ai vérifié avec un document.writer() .

Code PHP :
<?php 
/**
* Méthode qui va permettre de faire du ajax avec les constructions
* @param int : typeParam
* @param int : idParam
*/
function build(typeParam, idParam){
var
xhr = getXhr();

// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){

// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('resultat').innerHTML = leselect;
}
}

// Ici on met le post
xhr.open("POST","../v3/Build/JoueursBatiments.class.php",true);

// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

// les variables
data="type=typeParam&id=idParam";

xhr.send(data);
}


Voici le début de mon fichier de réception:
Code PHP :
<?php 
if ( isset($_POST["type"]) && !empty($_POST["type"]) &&
isset(
$_POST["id"]) && !empty($_POST["id"]) ) {

}
else echo
"<span class=\"rouge\"><b>Variables vides ou enxistantes</b></span>";


Donc en faisant la méthode suivante :
Code PHP :
<?php 
// les variables
data="type=typeParam&id=idParam";

xhr.send(data);

Je franchis bien les conditions, mais en faisant un echo je m'aperçois que les variables contiennent respectivement :
$_POST["type"] = typeParam et $_POST["type"]= idParam

Au lieu des 2 entiers qui devraient normalement être à la place de ces string, je reçois cela. Qui en faite si l'on fait attention, contiennent le nom des variables envoyés :/


J'ai donc essayé cette solution pour envoyer des int et non le nom des variables:
Code PHP :
<?php 
// les variables
data="type="+typeParam+"&id="+idParam;

xhr.send(data);

Mais cela ne marche pas, puisque dans le fichier de réception, cela ne franchis pas les conditions du if et me renvoie sur mon echo du else.


Bref, je ne vois absolument pas, malgré une recherche.
Donc si quelqu'un pouvait m'éclairer sur ce léger problème qui me cause des torts depuis quelques heures ^^

Merci d'avance pour toute aide Smile


RE: Javascript, envoie de paramètres - Ekilio - 22-09-2008

Bonjour,

De toutes façons, c'est :

Code PHP :
<?php 
// les variables
data="type="+typeParam+"&id="+idParam;

xhr.send(data);

qu'il faut que tu fasses. Autrement, tu envois juste une chaine de caractères.

Mais ta condition... Ben, essayes de faire un var_dump($_POST) et regardes ce que tu as ?


RE: Javascript, envoie de paramètres - P0ulp0r - 22-09-2008

Voilà ce que cela affiche :
Code PHP :
<?php 
string
(9) "typeParam" string(7) "idParam"

Donc bien le nom des variables, car "typeParam" contient 9 caractères et "idParam" contient bien 7 caractères.

Bref, il m'envoie des string des noms de variables au lieu des entiers.
Bref, assez embêtant ce problème Smile


RE: Javascript, envoie de paramètres - Ekilio - 22-09-2008

Même en mettant :

Code PHP :
<?php 
// les variables
data="type="+typeParam+"&id="+idParam;

xhr.send(data);

Dans ton code au lieu d'une seule chaine ?


RE: Javascript, envoie de paramètres - P0ulp0r - 22-09-2008

Ekilio a écrit :Même en mettant :

Code PHP :
<?php 
// les variables
data="type="+typeParam+"&id="+idParam;

xhr.send(data);

Dans ton code au lieu d'une seule chaine ?

Là je n'ai carrément aucun affichage, c'est pour cela.
Je viens de réessayer pour en être sur, il y a toujours rien :/

Il faut dire, que c'est un peu énervant ce problème, mais bon.


Edit: Oulà, je comprends rien, maintenant ca marche en mettant ce que tu m'as, dis. Alors qu'avant impossible oO'
Même en ayant réessayer après ton poste. Bref je comprends pas trop.

Par contre, léger soucis, il ne reconnait pas les variables:
string(1) "0" string(2) "44" Variables vides ou enxistantes
Donc il passe par le else et non par el if, il faut que je regarde ca.


Merci à toi Ekilio Wink


RE: Javascript, envoie de paramètres - Ekilio - 22-09-2008

J'imagine que ton var_dump était placé avant le if() ? Et par hasard, essayes de le faire sur $_REQUEST à la place de le faire sur $_POST, et rajoute un :

alert(data)

Juste avant ton

xhr.send(data);


RE: Javascript, envoie de paramètres - Hakushi - 22-09-2008

[edit] Ok, j'ai rien dit, ca m'apprendra a mettre 30min a ecrire une reponse :p

Bizarre je viens de tester et ca marche :ninga:

Code :
function build(typeParam, idParam){
    var xhr = new XMLHttpRequest();
    
        // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
        alert(xhr.responseText);
    }
                
    // Ici on met le post
    xhr.open("POST","test.php",true);
                
       // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                
       // les variables
      data="type="+typeParam+"&id=" +idParam;
                
       xhr.send(data);
}

Avec un var_dump dans test.php qui m'affiche bien les bonnes valeurs (je fais un javascript:build(11, 12) )

Code PHP :
<?php 
array(2) {
[
"type"]=>
string(2) "11"
["id"]=>
string(2) "12"
}
[/
i]



RE: Javascript, envoie de paramètres - P0ulp0r - 22-09-2008

C'est bon j'ai trouvé d'où cela venait.
Vu que je mettais $_POST["type"]=0, il devait croire qu'elle était vide alors que non.

Bref merci à vous 2 pour cette aide rapide Wink

Je vous souhaite une bonne soirée.
Bonne continuation Smile