Erreur : SyntaxError: missing ) after argument list

Résolu
Bengt -  
 Bengt -
Bonjour,

Après plusieurs minutes de recherches infructueuses, je me permet de venir vous demander de l'aide.

Voilà le soucis, j'exécute une fonction js après un clic sur un lien en lui passant 4 arguments.

Problème, lors de l'exécution, je me retrouve avec cette erreur et je ne trouve pas pourquoi :
SyntaxError: missing ) after argument list

Avec une flèche pointant sur En attente sur FireBug ci-dessous :
js_affiche_edit_Delib(152, 143, En attente, Lancement)

Voilà les portions de code qui sont concernés !

HTML / PHP :
echo("<a href='#' class='button_SearchMore' onclick='js_affiche_edit_Delib(".$deliberation['MODIF_LOT'].", ".$deliberation['NUMERO'].", ".$deliberation['ELIB'].", ".$deliberation['TLIB'].")'>+</a>");

JS :
function js_affiche_edit_Delib(refcourrier_Modiflot, num_Deliberation, etat_Delib, type_Delib) { Exécution du Code }

Une petite idée ? J'ai raté quelque chose d'hyper évident ? (Il est 9h du matin en même temps :P)

Merci d'avance ! ;)

2 réponses

  1. Utilisateur anonyme
     
    Bonjour
    Si firebug pointe sur $deliberation['ELIB'], c'est que ton PHP n'est pas interpreté, car normalement la variable $deliberation['ELIB'] ne devrait exister que dans le serveur, pas chez le client où le javascript est exécuté.
    Ta page a-t-elle bien une extension .php ?
    Si tu travailles en local, as-tu un serveur Apache (Wamp, easyphp... ?
    Utilises-tu bien ce serveur pour appeler ta page ( url http://localhost ou http://127.0.0.1)
    2
    1. Bengt
       
      Abus de langage de ma part, la flèche pointe sur "En attente", donc le troisième argument dans FireBug (qui est l'équivalent après interprétation de $deliberation['ELIB'])

      Naturellement le PHP est interprété sur le serveur. Ce n'est pas un serveur local mais distant et oui il y a la bonne extension au fichier ;)
      0
  2. Utilisateur anonyme
     
    L'appel
    js_affiche_edit_Delib(152, 143, En attente, Lancement)
    est incorrect, ce devrait être
    js_affiche_edit_Delib(152, 143, "En attente", "Lancement")
    (note les double quotes)
    Pour les ajouter, ne pas oublier de les échapper :
    echo("<a href='#' class='button_SearchMore' onclick='js_affiche_edit_Delib(".$deliberation['MODIF_LOT'].", ".$deliberation['NUMERO'].", "\".$deliberation['ELIB']."\", \"".$deliberation['TLIB']."\")'>+</a>");
    1
    1. Bengt
       
      Merci beaucoup ! C'était bien l'erreur, il fallait les échapper.
      Pourquoi les doubles quotes sont-elles importantes dans ce cas ?

      Il y a une erreur à votre premier échappement ! ;)

      En tous cas, merci beaucoup !
      0
    2. Utilisateur anonyme
       
      Les doubles (ou simples) quotes servent à indiquer à javascript qu'il s'agit d'une chaîne de caractères. Si tu n'en mets pas, ce qui commence par une lettre est un symbole (nom de variable, de fonction...) Dans ton cas précis, Javascript a pris "En" pour un nom de variable et "attente" l'a surpris car un deuxième symbole sans séparateur, ce n'est pas permis par la syntaxe de Javascript. Il a supposé que tu avais oublié la parenthèse qui fermait la liste des arguments de la fonction.
      0
    3. Bengt
       
      Ah en effet ! Je m'en souviendrai désormais !
      Merci beaucoup !
      0