我正在尝试在iframe中构建一个网址。在下面的代码中使用jQuery解析URL参数:
<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上没有第三方系统的可见性,目前,该系统返回的响应是该数据库中未知的记录。但是,我知道记录存在,所以我认为问题是URL没有正确构建。如何让URL显示在页面正文中,以便我可以看到发生了什么?我认为我的变量范围可能是错误的开始?
答案 0 :(得分: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
才能找到它。
值得注意的是,ad-hoc向jQuery变量添加函数是不好的形式。尝试制作插件http://learn.jquery.com/plugins/basic-plugin-creation/
答案 1 :(得分:0)
向iframe添加id并从脚本中设置src。
$( '#myIframe' )[0].src = "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval;
答案 2 :(得分: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>
答案 3 :(得分: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>
像这样的东西,也许不是这个。