2010-06-08 107 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 

是的,這是一個很長的例子,但我敢肯定,你可以提取所有額外的垃圾是一個最低限度的例子。 :)