-1

我正在尝试在 iframe 中构建 URL。URL 参数在下面的代码中使用 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');

</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 显示在页面正文中,以便查看发生了什么?我认为我的变量范围可能一开始就错了?

4

4 回答 4

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/

于 2013-08-29T19:04:05.973 回答
0

将 id 添加到 iframe 并从脚本中设置 src。

$( '#myIframe' )[0].src = "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval;
于 2013-08-29T18:56:37.483 回答
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>
于 2013-08-29T18:57:55.383 回答
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>

像这样的东西,也许不完全是这样。

于 2013-08-29T19:03:03.250 回答