2013-08-20 1 views
0

Im в настоящее время борется с проблемой, связанной с AJAX, на веб-сайте.
Целью является следующее:
Существует «простая» HTML-страница, содержащая некоторые ссылки и контент.
Доступ к элементам DOM на странице HTML, загруженной с помощью AJAX

Если вы нажмете на ссылку, я хочу открыть файл, который включает в себя ссылку (от href), в пределах нового div, наложенного на страницу. Содержимое со страницы, конечно же, загружается AJAX в новый div (наложенный).

В этом новом наложенном div я хочу добавить код JS, который в общем уже работает.
Проблема в любом случае заключается в том, что элементы DOM внутри страницы, загруженной на AJAX, не могут быть доступны таким образом, с которым удобно работать, в моем конкретном случае. я получил следующий кусок кода, до сих пор:

$$('.add-exercise').addEvent('click', function(e) { 
     var request_exercise_add = new Request.HTML({ 
      'method' : 'post', 
      'url' : e.target.get('href'), 

      onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript) { 
      // i know i can access responseElements here.. 
      } 
     }); 

     request_exercise_add.send('s=true'); 

     return false; 
    }); 

Я знаю, что я могу получить доступ к элементам, возвращаемые в responseElements, но логика на прилагаемом сайте как-то довольно сложна, и поэтому он должен быть можно добавить JS в HTML-код на динамически загруженной странице. Обратите внимание, что JS также не может быть добавлен в раздел head, потому что он не будет знать элементы, загружаемые после события dom-ready.

+0

был моим ответом, связанным с вашим вопросом? Я понял тебя правильно? – Sergio

ответ

1

Вы пробовали iframe? или веб-сайт, который вы пытаетесь добавить, не содержит файлов cookie PPP и AllowContentInIframe ..?

+0

Спасибо за предложение. Я уже думал об этом и мог бы попробовать, но меня все еще интересует «основное» решение AJAX. – Chris

0

Если вы хотите добавить скрипт в запрос ajax, вам понадобится evalScripts: true, и вы должны удалить котировки вокруг опций request.

$$('.add-exercise').addEvent('click', function (e) { 
    var request_exercise_add = new Request.HTML({ 
     method: 'post', 
     url: e.target.get('href'), 
     evalScripts: true, 
     onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) { 
      // i know i can access responseElements here.. 
     } 
    }); 
    request_exercise_add.send('s=true'); 
    return false; 
}); 

Я не знаю, что такое содержание ответа, но вы также можете использовать Mootools-х .set() вместо innerHTML для добавления новых элементов (если вы не делаете, что пока). Возможно, стоит проверить Dimitar ответ here об этом.

Смежные вопросы