gpt4 book ai didi

javascript - 一个 URL 包含在另一个 URL 中的参数

转载 作者:行者123 更新时间:2023-12-01 02:19:05 26 4
gpt4 key购买 nike

这是一个简单易懂的问题,我将逐步解释以使一切都清楚。

我正在使用 Google Feed API 将 RSS 文件加载到我的 JavaScript 应用程序中。

如果需要,我有一个设置可以绕过 Google 缓存,并且我通过在发送到 Google Feed API 的 RSS 文件链接末尾附加一个随机数来实现此目的。

例如,假设这是一个 RSS 链接:

http://example.com/feed.xml

为了绕过缓存,我在末尾附加一个随机数作为参数:

http://example.com/feed.xml?0.12345

Google Feed API 的整个网址如下所示,其中“q”是上面的链接:

https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=5&q=http://example.com/feed.xml?0.12345

这会绕过缓存并在大多数情况下运行良好,但当我想要使用的 RSS 链接已经有参数时就会出现问题。例如,像这样:

http://example.com/feed?type=rss

像以前一样在末尾附加数字会出错,并且不会返回 RSS 文件:

http://example.com/feed?type=rss?0.12345 // ERROR

我尝试使用“&”附加随机数,如下所示:

http://example.com/feed?type=rss&0.12345

这不再给出错误并且 RSS 文件被正确返回。但如果我在 Google Feed API url 中使用上述内容,它就不再绕过缓存:

https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=5&q=http://example.com/feed.xml&0.1234

这是因为“0.1234”被认为是整个url的参数,而不是“q”url的参数。因此“q”仅保留为“http://example.com/feed.xml”,它不是唯一的,因此会加载缓存版本。

有没有办法让数字参数成为“q”网址的一部分而不是整个网址的一部分?

最佳答案

您需要像这样使用encodeURIComponent:

var url = 'http://example.com/feed.xml&0.1234';
document.getElementById('results').innerHTML = 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=5&q=' + encodeURIComponent(url);
<pre id="results"></pre>

您正在转义原本会被视为网址一部分的特殊字符。

要附加或创建查询字符串:

var url = 'http://example.com/feed.xml';
var randomParameter = '0.1234';
var queryString = url.indexOf('?') > - 1;
if(queryString){
url = url + '&' + randomParameter;
} else {
url = url + '?' + randomParameter;
}
//url needs to be escaped with encodeURIComponent;

关于javascript - 一个 URL 包含在另一个 URL 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com