ajax成功功能出现问题

时间:2019-06-05 11:51:48

标签: javascript jquery ajax

在iframe中,我有以下脚本:

$("a").on("click", function (e) {
  e.preventDefault();
  if (e.target.href) {
    let link = e.target.href;
    $.ajax({
      url: "/newOrigin",
      data: {
        "link": link
      },
      type: "POST",
      success: function (response) {
        parent.document.getElementById("oframe").srcdoc = response.site;
        parent.document.getElementById("oLink").href = link;
      },
      error: function (error) {
        console.log(error);
      }
    });
  }
});

这不起作用。防止默认值不会执行其工作,这意味着事件本身不会被触发。我相信问题出在ajax成功函数的第二行,因为下面的代码工作得很好(srcdoc更改并记录了控制台)。

$("a").on("click", function (e) {
  e.preventDefault();
  if (e.target.href) {
    let link = e.target.href;
    $.ajax({
      url: "/newOrigin",
      data: {
        "link": link
      },
      type: "POST",
      success: function (response) {
        parent.document.getElementById("oframe").srcdoc = response.site;
        console.log("Hello");
      },
      error: function (error) {
        console.log(error);
      }
    });
  }
});

oLink是一个标记元素(超链接)的ID,oframe是该代码所在的iframe父级中另一个iframe的id。

有人知道为什么会这样吗?

编辑:该网站有两个iframe,每个iframe上方都有一个标题(每个标题都有在每个iframe中显示的页面的href)。在第一个iframe中单击链接时,随该链接发送一个ajax请求,并且响应中包含该页面的html,该html被发送并显示在第二个iframe中(成功功能的第一行)。现在,我想将第二个iframe上方的单词的href更改为第一个iframe中单击的链接的链接。因此,两个标题和两个iframe位于同一个父级组件(相同级别)中,而脚本位于第一个iframe中。

此处使用的html是base.html + index.html(index.html中的iframe和标题):https://github.com/MohamedMoustafaNUIG/AnnotatorVM/tree/master/app/templates

EDIT2:显然,成功函数与其余代码隔离,这意味着它无权访问“链接”变量。我通过返回响应中的链接并从那里访问它来解决了这个问题。但是事件仍然没有触发:(

0 个答案:

没有答案