繁体   English   中英

AJAX Insert HTML with jquery 打开无限循环的新标签

[英]AJAX Insert HTML with jquery opens infinite loop of new tabs

当从我的“关于”菜单(第 1 页)中选择菜单选项时,我正尝试使用 AJAX 打开基于 html 模板的新选项卡(第 2 页)。 因此,“第 1 页”打开“第 2 页”,该函数将代码插入“第 2 页”。 “关于”菜单是一个导航栏无序列表。

我编写的代码访问了一个预先发布的谷歌文档。 我只是想将文档插入模板中的一个部分。

我已经检查了所有中间步骤。 没有错误,文档以 HTML 字符串形式返回。

第一个函数,menuClick:

function menuClick(doclink) {

  window.open( 
            "AboutTemplate.html", "_blank");

  inject_to = $("content"); 
  load_from = "AboutTemplate.html"; 
  d = loadDoc(doclink, inject_to, load_from); }

第二个函数,loadDoc:

function loadDoc(doclink, inject_to, load_from) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    d = this.responseText;
  
    console.log("Inside loadDoc")
    console.log (inject_to + ", " + load_from)
    console.log("-----------------------------")
    console.log(d)
    $.get(load_from, d, function(d) {
      inject_to.html(d);
      })
    }
  }
  xhttp.open("GET", doclink, true);
  xhttp.send();}

最后,事件处理程序,它引用菜单 ID 'AboutPages':

$('AboutPages').click(menuClick())

当启动这段代码时,它进入一个循环:

  1. 不断打开新标签,而不仅仅是一个标签。
  2. 不将 HTML 插入到新打开的选项卡中。

正如我所说,我已经确认所有内容都以正确的形式从谷歌文档返回。 这就是控制台日志语句要识别的内容。 我把它们包括在内是因为我想知道我的顺序是否不正确?

更新我已经修复了打开多个选项卡的循环。 事件处理程序所做的事情与我包含在每个 LI 元素中的“onclick”事件相同。 所以,我已经消除了事件处理程序。

我还重新验证了 Google 文档正在返回一个 HTML 字符串。 这是。 所以,我明白了。 我只是无法确定将其插入新打开页面的正确方法。

我试过这个,但没有用:

var p = window.open(load_from,"_blank")

p.getElementById('contents') = loadDoc(doclink, inject_to, load_from)

当我尝试将新打开的页面作为它自己的变量进行标注时,它不会让我访问任何与正常打开窗口相关的属性。

尝试删除括号,不要就地调用您的处理程序,而是作为参数传入:

$('AboutPages').click(menuClick())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM