2010-06-08 10 views
4

espérant que quelqu'un pourrait pls me faire savoir comment empêcher le symbole » & « d'être remplacé par » & "dans mon URL, spécifiquement dans le javascript?Comment empêcher le symbole « et » d'être remplacé par « &

Juste pour développer sur l'exigence, je reçois mon URL à partir d'une table de base de données Oracle, que j'utilise ensuite dans Oracle Application Express, pour définir l'attribut src d'un iframe à cette URL. La table Oracle est stockée correctement, c.-à-d.

http://mydomain.com/xml/getInfo?s=pvalue1&f=mydir/Summary.xml 

ce qui apparaît dans mon utilisation en essayant de passer en iframe src en utilisant javascript est:

http://mydomain.com/xml/getInfo?s=pvalue1&f=mydir/Summary.xml 

qui retourne essentiellement une page ne peut pas être trouvé

Hope this davantage clarifié ma question.

Merci.

+0

D'où vient votre URL? – SLaks

+0

um .. voulez-vous dire empêcher & d'être remplacé par et quand il est envoyé? –

+0

Pouvez-vous fournir une partie du code environnant pour illustrer le problème? C'est probablement le cas que votre code côté serveur "échappe" l'esperluette, qui ne serait généralement pas ce que vous voulez pour Javascript. Cependant, nous ne savons pas quelle est la langue de votre serveur, donc il est difficile de dire comment la réparer. – Pointy

Répondre

5

Je suppose que vous faites quelque chose comme ceci:

1) Sélection du texte d'URL à partir de la base de données dans un élément de page Apex.

2) En Javascript, obtenir le texte de l'URL de l'élément de page et l'utiliser pour définir la source iframe.

Lorsque vous sélectionnez la valeur à l'étape 1, Apex remplacera automatiquement le « & » par « & » de sorte que la page HTML est valide - ce sera quelque chose comme:

<input type="hidden" id="P1_URL" 
value="http://mydomain.com/xml/getInfo?s=pvalue1&amp;f=mydir/Summary.xml" /> 

Vous aurez donc pour inverser la transformation dans votre code Javascript - quelque chose comme:

document.getElementById('myIframe').src = $v('P1_URL').replace('&amp;','&'); 
+0

Salut Tony, je me demandais juste si l'appel .replace() est un Apex V3.2 car j'utilise Apex v3.0.1 b/c j'obtiens une erreur javascript - objet exprès. – tonyf

+0

Non, l'appel replace() est juste Javascript. Il est plus probable que le problème provienne des fonctions document.getElementById() ou $ v(), car elles prennent un identificateur de chaîne et le résolvent en objet. –

+0

... donc dans mon exemple il doit y avoir un iframe avec id = "myIframe" et un élément de page Apex * rendu * appelé P1_URL sur la page. –

2

J'ai eu le même problème et il m'a fait beaucoup de chagrin en utilisant PHP et JS.

Voici comment j'ai résolu le problème en utilisant substring(0,1).

function callAJAX() 
    {  
     var var_Date = document.getElementById('DateAJAX').value;  
     var l2 = '&type=' + <?php echo $type; ?>; 
     var l2=l2.substring(0,1) + '<?php echo "type=" . $type; ?>'; // stupid js fix 
     jsfunction('ajaxdiv', 'phpfilename.php?date=' +var_Date + l2,'<? echo $num; ?>'); 
    } 

L'URL se traduira par quelque chose comme:

phpfilename.php?date=2012-10-31&type=2 

Oui, il est un exemple de long, mais je suis sûr que vous pouvez extraire tous les pourriels supplémentaire pour être un exemple minimaliste. :)