2017-01-01 1 views
0

J'ai un problème, je dois appeler une fonction à partir d'un bouton onclick().Appelez l'erreur de fonction javascript

Javascript:

function deleteFolder(elemento){ 
       var form=document.getElementById(elemento); 
       var conf=confirm("Sei sicuro di eliminare questa cartella?\nL'eliminazione sara' definitiva"); 
       if (conf === true) 
        form.submit(); 
      } 

Cette fonction obtenir un paramater faite par php, le problème est que si ce paramètre a un peu d'espace à l'intérieur, la fonction est appelée ..

DeleteFolder (NomDossier) -> il fonctionne
DeleteFolder (Nom du dossier) -> Bien sûr, il ne marche pas fonctionne

À partir de php, je scanne simplement les répertoires et en mets des noms sous forme multiple avec la fonction foreach().

Donc la question est: 1) Comment php je peux mettre un paramètre qui fonctionne avec l'appel de la fonction javascript avec des espaces à l'intérieur?

2) Si j'ai un répertoire appelé "Nom du dossier", il suffit de mettre addslashes dans $ _POST pour contourner XSS? car il coupe tout près lapostrophe et est devenu:

HTML

<button onclick="deleteFolder(Folder)"> 

Thanxs pour toute suggestion, je ne peux pas trouver quelque chose de similaire déjà dans ce forum.

+0

Vous avez un identifiant avec un espace dedans – Carcigenicate

+0

Vous devez être comme 'elemento =" nom du dossier "' Faites-en une chaîne –

+0

Oui @BoyWithSilverWings vous avez raison! C'était si simple, merci à l'homme !!=) Je viens de mettre en php un " d'abord et ensuite le paramètre de sorte qu'il est devenu une chaîne;)) – Kiks777

Répondre

0

Vous pouvez mettre le nom du dossier réel dans un attribut distinct, par exemple folder-name et dans l'ID ont des numéros incrémentiels, étant donné que cette modification est nécessaire dans votre fonction JavaScript.

HTML

<button folder-name="Folder" onclick="deleteFolder(id)"> 

JavaScript

function deleteFolder(elemento){ 
    var form=document.getElementById(elemento); 
    var folderName = form.getAttribute('folder-name'); 
    // then use the folderName however you want it. 
} 
+0

Ouais bonne alternative aussi =) – Kiks777

2

Je suppose que vous passez une chaîne à la méthode DeleteFolder(). Si c'est le cas, utilisez le code suivant.

<button onclick="deleteFolder('FolderName')"> 
<button onclick="deleteFolder('Folder Name')"> 

Vous devez utiliser des guillemets pour indiquer que vous transmettez une chaîne à la fonction. Cela devrait résoudre votre problème.

0

Merci à toutes les réponses! =)

Je résous ajouter &quot; (-> ") en php

premier

"<button onclick='deleteFolder(".$elem."); return false;'>Elimina</button>" 

suivant

"<button onclick='deleteFolder(&quot;".$elem."&quot;); return false;'>Elimina</button>" 

Ainsi, le paramètre est devenu une chaîne et peut être passé à la fonction =)