2010-06-08 82 views
4

希望有人能请让我知道如何防止符号” &“被替换为”我的网址内&“被替换的符号“&”,特别是在JavaScript?如何防止被“&

为了扩展需求,我从Oracle数据库表中获取URL,然后在Oracle Application Express中使用该数据库表将iframe的src属性设置为此url。

仅供参考,存储在Oracle表格实际上是正确存储的,即

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

试图越过到使用JavaScript IFRAME SRC什么时候出现在我的使用方法是:

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

基本上返回一个页面无法找到

希望这进一步明确了我的问题。

谢谢。

+0

您的网址来自哪里? – SLaks 2010-06-08 13:44:09

+0

恩..你的意思是防止&被&发送时被替换? – 2010-06-08 13:44:39

+0

你能提供一些周围的代码来说明问题吗?这可能是你的服务器端代码“逃避”&符号的情况,这通常不是你想要的Javascript。但是,我们不知道你的服务器端语言是什么,所以很难说如何解决它。 – Pointy 2010-06-08 13:45:26

回答

5

我怀疑你正在做的事情是这样的:

1)选择从数据库URL文本到顶点页面项目。

2)在Javascript中,从页面项获取URL文本并使用它设置iframe源。

当您选择在步骤1中的值,顶点会自动替换“&”,由“&”,使HTML页面是有效的 - 这将是这样的:

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

因此,您将有以扭转你的Javascript代码中的转换 - 如:

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

嗨托尼,只是想知道如果.replace()调用是Apex V3.2,因为我正在使用Apex v3.0.1 b/c我得到一个JavaScript错误 - 对象已经过期。 – tonyf 2010-06-08 14:50:02

+0

不,replace()调用就是Javascript。更可能的问题来自document.getElementById()或$ v()函数,因为这些函数接受一个字符串ID并将其解析为一个对象。 – 2010-06-08 14:57:00

+0

...所以在我的例子中,页面上必须有一个id =“myIframe”的iframe和一个名为P1_URL的* Apex页面项。 – 2010-06-08 14:58:25

2

我有同样的问题,它使我很多使用PHP和JS的悲伤。

这就是我使用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; ?>'); 
    } 

的URL会导致类似:

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

是的,这是一个很长的例子,但我敢肯定,你可以提取所有额外的垃圾是一个最低限度的例子。 :)