SyntaxError: l'identifiant commence immédiatement après le texte numérique dans Firebug

Je reçois cette erreur lorsque j'appelle cette fonction javascript:

function kickUser(id_userChat){ $.post("chatFuncs.php", { action: "kick", id_user: id_userChat }); } 

Cette fonction "kickUser" est générée pour chaque utilisateur connecté à ma boîte de chat, comme celle-ci

 $listUsers .= '<img src="imgUsers/'.$DBClass->nomImg($rowUsers['id_user'],$posImg).'" height="'.$heightImg.'" width="'.$widhImg.'"/> <span class="styleMsg">'.$rowUser['nameUser'].'</span>&nbsp; <a href="#" class="BtnKick" onClick="kickUser('.$rowUsers['id_user'].')">Kick</a></br>'; 

Et l'action "kick" n'est qu'une mise à jour de ma base de données où je supprime l'utilisateur de la table de mes chatUsers

Si je change $ rowUsers ['id_user'] pour $ rowUsers ['userName'], l'erreur passe à: ReferenceError: 'userName' n'est pas défini (j'ai changé le nom réel de l'utilisateur pour 'userName' juste pour cet exemple).

Les identifiants en JavaScript ne peuvent pas commencer par un nombre. Ils doivent commencer par une lettre, $ ou _ .


Je suppose que cela vient de ceci:

 onClick="kickUser('.$rowUsers['id_user'].')">Kick</a> 

Si vous voulez passer une chaîne, vous devez citer la valeur passée.

 // ----------------v-------------------------v onClick="kickUser(\"'.$rowUsers['id_user'].'\")">Kick</a> 

Je ne connais pas PHP, alors peut-être que vous avez besoin d'une fuite différente, mais cela donne l'idée.

Le code JavaScript résultant sera

 kickUser(userName) 

… et évidemment il n'y a pas de js variable userName . Vous souhaitez passer une chaîne à la place:

 kickUser('userName'); 

Ajoutez donc les citations / apostrophes à la sortie, et n'oubliez pas d'échapper $rowUsers['userName'] . C'est assez pareil pour $rowUsers['id_user'] , qui semble avoir une sortie même un identifiant invalide.