javascript - JSONP请求链接到用户输入字段+按钮: only executes once

标签 javascript json ajax input jsonp

这里是初学者,一直在网络上搜索,试图找出以前是否有人问过这个问题,但没有运气。

我一直在尝试创建一个对维基百科的 JSONP 请求,该请求链接到我页面上的用户输入字段,由按钮(即搜索字段)激活。页面加载后第一次使用时它会很好地触发(返回数字页面 id),但此后如果我尝试再次搜索,它不会覆盖响应变量...

预先感谢您的帮助!

ps - 如果可能的话,我最好避免使用 jQuery 并坚持使用纯 JS,谢谢。

代码在这里:

var x = document.getElementById("test");
var y = document.getElementById("loadResults");
var wikiResponse;
var script = document.createElement("script");
var userInput;

function launchSearch () {
  if (document.body.contains(script)) {
    document.body.removeChild(script);
  }
  script.src = "https://en.wikipedia.org/w/api.php?action=query&titles=" + userInput + "&prop=revisions&rvprop=content&indexpageids=1&format=json&callback=loadResults"; 
  document.body.appendChild(script);
}

function loadResults(response) {
 wikiResponse = response.query.pageids[0];
 x.textContent = wikiResponse;
}

y.addEventListener("click", function() {
  userInput = document.getElementById("userInput").value;
  launchSearch();
});

最佳答案

您创建的脚本仅在由 createElement 创建时才会执行,如果从正文中删除然后使用 appendChild 再次添加,则不会执行(请参阅 this answer ) .

相反,每次您想要执行加载时,请尝试创建该元素(使用 createElement),而不是从 DOM 中删除该元素并再次重新添加。

关于javascript - JSONP请求链接到用户输入字段+按钮: only executes once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143426/

相关文章:

javascript - 简单的 JavaScript/HTML 幻灯片

c# - 如何使用 Json.NET StringEscapeHandling.EscapeNonAscii

json - 为什么这个 IAM 策略有语法错误?

php - 安全 php -> Ajax 根据 id 删除项目

javascript - 如何使用jquery ajax post方法[Codeigniter]将textarea数据保存到 session ?

JavaScript 显示旧事件

javascript - 如何在 Sencha Touch 中向模型添加自定义验证规则

json - 使用命令 sed 更改日志文件日期?

javascript - Django:如何从 Django View 中的 ajax 调用中检索序列化的复选框值?

javascript - 导轨 3.2 : It is possible to remove Jquery gem and load it from an external source in html