2012-07-11 7 views
1

j'ai une chaîne JTemplate qui ressemble à cecicordes Échapper à JTemplate

<a class="add" href="#" onclick="javascript:myfunction('{$T.Properties.Title}')" > 

Cette pause de code lorsque mon paramètre $ T.Properties.Title est une chaîne qui contient un seul caractère de citation en elle.

Je pourrais utiliser un caractère de guillemets doubles en passant ma valeur de paramètre, mais mon code va alors se casser pour des guillemets doubles. Comment puis-je échapper la chaîne d'entrée afin que mon code fonctionne pour les chaînes qui ont à la fois des guillemets simples et doubles?

Répondre

0

Vous devez échapper les guillemets avec antislashs lorsque vous créez l'objet:

Properties = {Title: 'I\'m lovin\' my quotes'}; 

EDIT:

Selon votre commentaire:

Aucun contrôle sur la source, malheureusement . :(JSON provient d'un site de tiers,

Vous pouvez essayer d'utiliser setTemplate(s, [], {filter_params: true});

qui, selon the docs utilise escapeHTML - mais je n'ai pas essayé et je ne sais pas comment cela fonctionne .

Voir cette question sur HTML avec filter_data échapper: jtemplates-html-in-variables

Ou essayez échapper guillemets après que vous recevez l'objet JSON I Beli. veille en PHP, vous pouvez utiliser json_encode - voir ici: json-parse-error-with-double-quotes

Autres solutions décrites ici: javascript-how-escape-quotes-in-a-var-to-pass-data-through-json

+0

Aucun contrôle sur la source, malheureusement. :(le JSON provient d'un site tiers. – ashwnacharya

0

J'ai eu le même problème, enfin ce que je ne suis évadé les citations dans le script java.

Voici mon code.

Dans Modèle:

$('#content').setParam('getUrl', getUrl); 

En HTML; modèle à l'intérieur.

href="{$P.getUrl($T.RESULTS.URL)}" 

JS Méthode:

function(theLink){ 
    return theLink.replace(/\"/g, "%22"); 

    //If you want to escape all the characters use the following 
    return escape((theLink)) 
} 

.. :) Vive