【问题标题】:Passing 2 URL Parameters?传递 2 个 URL 参数?
【发布时间】:2012-01-16 10:58:18
【问题描述】:

我需要在一个 URL 中传递 2 个 URL 参数。该 URL 源自电子邮件,用户将单击将他们定向到我的站点的链接。第一个参数触发页面上的脚本,第二个参数用于我的 CMS 将从参数呈现的模块。

第一个参数是:message=1(这个参数触发javascript)

第二个参数是:name={tag_recipientfirstname}(我的CMS会渲染模块)

第一个调用的脚本如下所示:

    <script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function() {
var url = window.location.href;
url = url.toLowerCase();
if (url.indexOf('message=1') != -1) {
        $j("a.message").colorbox({
            open:true
});
   }
$j("a.message").colorbox(); //not related to URL parameter
}); 
</script>

第二个参数在页面上使用为:

<div>
<p>{ module_url,name} (again CMS will render this module)</p>
</div>

编辑

我意识到我遗漏了几件事:

首先:我如何传递这两个参数,以便它们都能按上面列出的方式工作?

我使用的 CMS 是 Business Catalyst。

【问题讨论】:

  • 我不确定我是否理解问题所在...? http://url?message=1&amp;name=2 ?一个参数在 JS 中使用另一个在 CMS 中?什么内容管理系统?
  • @lynda 你的具体问题是什么?
  • @natedavisolds - 很抱歉。我编辑了问题。

标签: javascript jquery url-parameters business-catalyst


【解决方案1】:
//split the `location.search` string at the ampersands
var search_arr = window.location.search.replace('?', '').split('&'),
    len        = search_arr.length,
    get_vars   = {},
    tmp        = [];

//iterate through the key/value pairs and add them to the `get_vars` object
for (var i = 0; i < len; i++) {
    tmp = search_arr[i].split('=');
    get_vars[tmp[0]] = tmp[1];
}

//you can now access your GET variables through the `get_vars` object like: `get_vars.name`

//you can check for the existence of a certain GET variable like this
if (typeof(get_vars['message-1']) != 'undefined') {
    $j("a.message").colorbox({
        open:true
    });
}

这是一个演示:http://jsfiddle.net/aBH8K/1/(http://jsfiddle.net/aBH8K/1/show/?message-1=3 用get var查看)

一些相关文档:

【讨论】:

  • 感谢您的信息,但我必须说我迷路了。我对 Javascript 不太熟练,你能给我一个关于颜色框脚本和我列出的模块的例子吗?
  • @Lynda 我更新了我的答案,只是最后的 if/then 语句发生了变化(我添加了你的 .colorbox() 代码,该代码只有在 message-1 是 GET 变量时才会运行。
【解决方案2】:

您的问题与其说是通用开发,不如说是一个非常具体的商业产品;我不知道您与他们订阅了哪个计划(免费或付费?),但无论如何最好得到他们的支持(另见我的结论)

不过,我会尽量让你走上正轨。

您的问题

首先,

电子邮件中的网址

在电子邮件中,您将不得不以某种方式建立一个链接,其中包含您想要的两个参数,正如@Jasper 所解释的那样。 这意味着类似:

http://yourwebsite.com/destination/path/?message=1&name={tag_recipientfirstname}

问号后面的都是GET query string。 参数用“&”符号分隔。

我绝对不知道如何正确地在 BC 电子邮件中构建 url,但我觉得它应该是一个自动化的地方,允许您在需要时指定其他参数。

javascript

你得到的仍然有效。这不是很好,你可以使用Jasper的解决方案或任何其他如How can I get query string values in JavaScript?

除非你想让它变得更好、更健壮,否则什么都不做。

商业催化剂(页面)

通常有办法在 CMS 中检索获取参数。通常是这样的

{ GET.param_name }

后退一步

我不是 BC 方面的专家,但我感觉您正在为可能已经成熟的东西走一条复杂的道路。

我再次建议您访问他们的support section(尽管我必须说这相当令人困惑!)并尝试了解实现目标的最佳方法是什么。总是有很多方法可以剥掉一只可怜的猫。 如果您在计划中获得支持,请务必这样做并尝试解释您的目标是什么,而不是如何实现您认为好的技术解决方案!

【讨论】:

  • 我最终让它变得比原来更复杂。 BC 有一些用于传递参数的模块,我知道但不知道如何将两者结合在一起。现在一切都很好。感谢您的信息 =>
猜你喜欢
  • 2016-05-20
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多