Javascript 传递一个';是脚本URL的一部分吗?
我的照片网站上的抽象摄影页面使用如下链接:Javascript 传递一个';是脚本URL的一部分吗?,javascript,json,variables,url,Javascript,Json,Variables,Url,我的照片网站上的抽象摄影页面使用如下链接: myphotosite.com/abstract.html { photo_set: "abstract", tags: "best" }, myphotosite.com/page.html?variable_1=abstract&variable_2=best { photo_set: "variable_1", tag: "variable_2"
myphotosite.com/abstract.html
{
photo_set: "abstract",
tags: "best"
},
myphotosite.com/page.html?variable_1=abstract&variable_2=best
{
photo_set: "variable_1",
tag: "variable_2"
},
该页面使用脚本调用FlickrAPI获取我的照片和信息。它包括以下几行:
myphotosite.com/abstract.html
{
photo_set: "abstract",
tags: "best"
},
myphotosite.com/page.html?variable_1=abstract&variable_2=best
{
photo_set: "variable_1",
tag: "variable_2"
},
我的网站目前有大量的页面和脚本(每个照片集一个脚本)。我想做的是在url中有一个页面加上变量和一个使用这些变量的脚本。按照上面的示例,链接如下所示:
myphotosite.com/abstract.html
{
photo_set: "abstract",
tags: "best"
},
myphotosite.com/page.html?variable_1=abstract&variable_2=best
{
photo_set: "variable_1",
tag: "variable_2"
},
脚本应该是这样的:
myphotosite.com/abstract.html
{
photo_set: "abstract",
tags: "best"
},
myphotosite.com/page.html?variable_1=abstract&variable_2=best
{
photo_set: "variable_1",
tag: "variable_2"
},
如何将url中的变量传递给该页面上使用的脚本?您可以使用解析页面的url并从中提取查询参数。请参见以下演示:
//在实际代码中将其设置为window.location.href
让pageUrl=”https://myphotosite.com/abstract.html?variable_1=abstract&variable_2=best";
让url=新url(pageUrl);
//构造你的对象
设obj={
照片集:url.searchParams.get('variable_1'),
标记:url.searchParams.get('variable_2')
};
控制台日志(obj)代码>布拉德在上面贴了一个链接,找到了答案。谢谢你,先生!这是给任何感兴趣的人的:
这是他链接到的页面:
在那里,我找到了以下代码,我在脚本顶部添加了这些代码,如下所示:
// get the variables
var url_variable = (function(a) {
if (a == "") return {};
var b = {};
for (var i = 0; i < a.length; ++i)
{
var p=a[i].split('=', 2);
if (p.length == 1)
b[p[0]] = "";
else
b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
}
return b;
})(window.location.search.substr(1).split('&'));
{
photo_set: url_variable["album"],
tag: url_variable["tag"]
},
因此,如果我想要我最好的抽象照片的相册,我的url应该是:
myphotosite.com/page.html?相册=摘要&标签=最佳
它就像一个符咒 谢谢你,布拉德!你引导我找到了答案,我在下面完整地发布了答案。