query
URL
的一部分似乎由 &
分隔的键值对组成并由 =
关联.
我一直使用 jQuery 的 $.param()
函数对我的查询字符串进行 URL 编码,因为我发现它使我的代码更具可读性和可维护性。
在过去的几天里,我发现自己在调用 MediaWiki API,但在使用硬编码 URL 清理我的工作原型(prototype)时要使用 $.param()
我注意到一些 MediaWiki API 包含带键但不带值的查询参数!
注意 &redirects
部分,没有任何值(value)。
jQuery 的 $.param()
接受一个对象,并且由于对象仅由键值对组成,因此不可能传递一个成员具有键但没有值的对象。
没关系,所以我假设我可以传递一些值,例如 null
或undefined
或0
但似乎所有这些都受到同样的对待。我发现这很令人惊讶,我一直无法发现任何东西in the MediaWiki API documentation关于这背后的原因。
好的,在我的例子中,通过手动构建 URL 字符串很容易解决。我的问题是“这是 MediaWiki API 中的一个怪癖吗?还是 URL 编码设计中的一个怪癖?我应该在哪里阅读以了解没有关联值的 URL 编码参数背后的推理?
最佳答案
他们所做的很可能只是检查参数是否已定义。通过将 redirects
添加到查询字符串,这实际上是在说“redirects 变量为 true”。因此,添加 redirects=0
仍然是定义该变量,并且 MediaWiki API 会注意到它已被定义(不关心值是什么)。
您的 jQuery 代码只需要附加该参数(具有任何值或无值),或者如果您不希望定义它,则省略它。
关于jquery - 不带值的 MediaWiki URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088184/