JeuWeb - Crée ton jeu par navigateur

Version complète : [résolu] Javascript, envoie de paramètres
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
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 :
/**
* Méthode qui va permettre de faire du ajax avec les constructions
* @param int : typeParam
* @param int : idParam
*/
function build(typeParamidParam){
    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 == && 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 :
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 :
// 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 :
// 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 34

Merci d'avance pour toute aide 2
Bonjour,

De toutes façons, c'est :

Code 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 ?
Voilà ce que cela affiche :
Code 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 2
Même en mettant :

Code PHP :
// les variables
data="type="+typeParam+"&id="+idParam;
                
xhr.send(data); 

Dans ton code au lieu d'une seule chaine ?
Ekilio a écrit :Même en mettant :

Code 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 16
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);
[edit] Ok, j'ai rien dit, ca m'apprendra a mettre 30min a ecrire une reponse 10

Bizarre je viens de tester et ca marche 71

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 :
array(2) {
  [
"type"]=>
  
string(2"11"
  
["id"]=>
  
string(2"12"
}
[/
i
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 16

Je vous souhaite une bonne soirée.
Bonne continuation 2
URLs de référence