Проблема с функцией успеха ajax - PullRequest
0 голосов
/ 05 июня 2019

Внутри 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 - это идентификатор элемента тега (гиперссылка), а oframe - это идентификатор другого iframe внутри родительского элемента iframe, где находится этот код.

Кто-нибудь знает, почему это происходит?

РЕДАКТИРОВАТЬ: на сайте есть два iframe, и каждый из них имеет заголовок над ними (каждый заголовок имеет ссылку на страницу, отображаемую в каждом iframe). При щелчке по ссылке в первом iframe отправляется ajax-запрос со ссылкой, и в ответе содержится HTML-код этой страницы, который отправляется для отображения во втором iframe (первая строка в функции успеха). Теперь я хочу изменить ссылку на слова над 2-м iframe, чтобы она была ссылкой на ссылку, нажатую в 1-м iframe. Таким образом, два заголовка и два элемента iframe находятся внутри одного и того же родительского компонента (одного уровня), а сценарий находится внутри первого элемента iframe.

Здесь используется html: base.html + index.html (iframes и заголовки в index.html): https://github.com/MohamedMoustafaNUIG/AnnotatorVM/tree/master/app/templates

EDIT2: очевидно, функция успеха изолирована от остальной части кода, что означает, что она не имеет доступа к переменной "link". Я решил это, вернув ссылку в ответе и получив от нее доступ. Но событие все еще не запускается: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...