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

标签 javascript jquery url google-feed-api

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

我正在使用 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/

相关文章:

jquery - Menucool jQuery Slider 的箭头按钮无法正常工作

javascript - node_modules 上的配置文件

javascript - 如何在悬停另一个 HTML 元素时创建平滑缩放并显示叠加层?

javascript - 你能在一个页面上定义两次 jquery 的 $(function(){...}) 吗?

javascript - 这找到另一个 div 的父级并使用 jQuery 切换其子级

java - HttpURLConnection 超时设置

iPhone 处理动态 URL

php - Google 报告了一些实际上并不存在的 404 错误。这是否表明我的网站被黑了?

javascript - 如何使用 ESLint

javascript - 使用 React-spring 为有条件渲染的组件设置动画的问题