维基百科无响应 API 使用 jQuery 调用
No Response from Wikipedia API Call using jQuery
我有一个 jQuery API 电话没有给我任何回应。这是代码:
$(document).ready(function() {
$("#form").submit(function() {
var apiCall = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val();
$.getJSON(apiCall, function(data) {
console.log(data);
});
});
});
我已经设法用这个 URL 得到了回应:https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=" + $("#searchTerm").val() + "&callback=?"
问题是我希望能够使用 returned 的每个页面的 URL,而上面的 API 调用只给了我标题和一个片段,但没有 URL.
根据 MediaWiki(已在沙箱中验证),确实提供 URL 的 API 调用是顶部代码示例中的那个:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val()
.
但在我的代码中它没有 return 任何东西。您可以在 https://codepen.io/khaledallen/pen/VaNGMa?editors=1011
处查看整个操作过程
任何指导将不胜感激(这也是我的第一个 Whosebug 问题,所以任何关于问题礼仪的指导都是有帮助的)。
当您提交表单时,它实际上会应用浏览器定义的默认行为,这意味着它将您重定向到表单的 action
属性。事实上,因为action
设置为#
,页面只是刷新。
为了解决这个问题,您应该通过简单地使用来防止默认行为:
$(document).ready(function() {
$("#form").submit(function(e) {
e.preventDefault();
将事件对象作为参数添加到提交事件处理程序 (e
),并对其应用 preventDefault
方法。
我想通了。
- 似乎由 MediaWiki 沙箱生成的 URL 将特殊字符替换为其 UTF-8 代码,但无法读取它们(?)。我将 URL 中的所有字符都更改为它们的常规字符,并且效果很好。
- 添加
format=2
选项有帮助。这是 mediawiki (https://www.mediawiki.org/wiki/API:JSON_version_2) 中的 JSON 格式选项之一
- 这是 URL returns 标题和 URLS:
https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info&generator=search&callback=?&utf8=1&formatversion=2&inprop=url&gsrsearch=Sophia&gsrprop=snippet"
我无法让它显示 URLs 和 extracts/snippets,所以这只是部分解决方案。
我有一个 jQuery API 电话没有给我任何回应。这是代码:
$(document).ready(function() {
$("#form").submit(function() {
var apiCall = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val();
$.getJSON(apiCall, function(data) {
console.log(data);
});
});
});
我已经设法用这个 URL 得到了回应:https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=" + $("#searchTerm").val() + "&callback=?"
问题是我希望能够使用 returned 的每个页面的 URL,而上面的 API 调用只给了我标题和一个片段,但没有 URL.
根据 MediaWiki(已在沙箱中验证),确实提供 URL 的 API 调用是顶部代码示例中的那个:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val()
.
但在我的代码中它没有 return 任何东西。您可以在 https://codepen.io/khaledallen/pen/VaNGMa?editors=1011
处查看整个操作过程任何指导将不胜感激(这也是我的第一个 Whosebug 问题,所以任何关于问题礼仪的指导都是有帮助的)。
当您提交表单时,它实际上会应用浏览器定义的默认行为,这意味着它将您重定向到表单的 action
属性。事实上,因为action
设置为#
,页面只是刷新。
为了解决这个问题,您应该通过简单地使用来防止默认行为:
$(document).ready(function() {
$("#form").submit(function(e) {
e.preventDefault();
将事件对象作为参数添加到提交事件处理程序 (e
),并对其应用 preventDefault
方法。
我想通了。
- 似乎由 MediaWiki 沙箱生成的 URL 将特殊字符替换为其 UTF-8 代码,但无法读取它们(?)。我将 URL 中的所有字符都更改为它们的常规字符,并且效果很好。
- 添加
format=2
选项有帮助。这是 mediawiki (https://www.mediawiki.org/wiki/API:JSON_version_2) 中的 JSON 格式选项之一
- 这是 URL returns 标题和 URLS:
https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info&generator=search&callback=?&utf8=1&formatversion=2&inprop=url&gsrsearch=Sophia&gsrprop=snippet"
我无法让它显示 URLs 和 extracts/snippets,所以这只是部分解决方案。