2013-08-29 55 views
-1

我試圖在iframe中構造一個URL。該URL參數在下面的代碼使用jQuery解析:HTML文檔中的Javascript變量範圍

<script type="text/javascript"> 

$.urlParam = function(name){ 
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
    if (!results) { return ''; } 
    return results[1] || ''; 
} 

var lidval = $.urlParam('lid'); 
var cidval = $.urlParam('cid'); 
var cyidval = $.urlParam('cyid'); 

</script> 


<iframe frameborder="0" scrolling="no" width="100%" src="http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval"></iframe> 

我不會在somerandomhost.com,目前有可視性第三方系統,通過該系統返回的響應是記錄ISN」在數據庫中已知。但是,我知道該記錄存在,所以我認爲問題是URL未正確構建。我怎樣才能讓URL顯示在頁面的正文中,以便我可以看到發生了什麼?我認爲我的變量範圍可能是錯誤的一開始?

+2

Javascript變量未在HTML中展開。 – Barmar

+0

將URL粘貼到新的瀏覽器窗口中。 –

回答

0

HTML將無法訪問您的JavaScript變量。您將需要使用document.write來構建您的iframe標記。或嘗試jQuery的緩解。

你可以在jQuery的做到這一點:

<script type="text/javascript"> 

$.urlParam = function(name){ 
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
    if (!results) { return ''; } 
    return results[1] || ''; 
} 

var lidval = $.urlParam('lid'); 
var cidval = $.urlParam('cid'); 
var cyidval = $.urlParam('cyid'); 
//construct url 
var iframe_url = 'http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval; 

jQuery(function($){ 
$('#your_frame_id').attr('src', iframe_url); 
}); 
</script> 


<iframe frameborder="0" id="your_frame_id" scrolling="no" width="100%" src=""></iframe> 
+0

謝謝,這工作完美。 –

0

向iframe添加一個id並從腳本中設置src。

$('#myIframe')[0].src = "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval; 
0

動態寫/與你的JavaScript變量打開你的iframe中。這應該可以解決你的問題。

使您的代碼像

<script type="text/javascript"> 

$.urlParam = function(name){ 
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
    if (!results) { return ''; } 
    return results[1] || ''; 
} 

var lidval = $.urlParam('lid'); 
var cidval = $.urlParam('cid'); 
var cyidval = $.urlParam('cyid'); 

$("iframe").attr(src, 'http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval'); 

</script> 


<iframe frameborder="0" scrolling="no" width="100%" src=""></iframe> 

這樣的事情,也許不完全是這樣。

+0

此外,給你的iframe一個id並使用JavaScript進行緩存並使用它並不是一個壞主意。 –

1

它看起來像你試圖在HTML文檔中使用javascript變量。您只能在該腳本標記的範圍內使用這些變量。嘗試像這樣

<script type="text/javascript"> 

$.urlParam = function(name){ 
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
    if (!results) { return ''; } 
    return results[1] || ''; 
} 

var lidval = $.urlParam('lid'); 
var cidval = $.urlParam('cid'); 
var cyidval = $.urlParam('cyid'); 

$('#someFrame').attr('src', "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval); 

</script> 

<iframe frameborder="0" scrolling="no" width="100%" id="someFrame"></iframe> 

您將不得不申請id到框架來找到它。

值得注意的是,爲jQuery變量添加特殊功能是不好的形式。嘗試製作插件http://learn.jquery.com/plugins/basic-plugin-creation/

+0

+1感謝這個Matt,我會研究插件方面。 –