0

我目前正在努力解决网站上的 AJAX 相关问题。
目标如下:
有一个“简单”的 HTML 页面,其中包含一些链接和内容。

如果您单击一个链接,我想打开一个包含链接(来自 href)的文件,该文件包含在覆盖到页面的新 div 中。来自页面的内容当然是通过 AJAX 加载到新的 div(覆盖的)中。

在这个新的覆盖 div 中,我想添加一些通常已经可以工作的 JS 代码。
无论如何,问题是在我的特定情况下,无法以一种易于使用的方式访问每个 AJAX 加载的页面中的 DOM 元素。到目前为止,我得到了以下代码:

$$('.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 中返回的元素,但包含的网站上的逻辑有点复杂,因此应该可以在动态加载页面的 HTML 代码中添加 JS。请注意,JS 也无法添加到该head部分,因为它不知道在 dom-ready 事件之后加载的元素。

4

2 回答 2

1

你试过 iframe 吗?或者您尝试添加的网站没有 PPP cookie 和 AllowContentInIframe ..?

于 2013-08-20T20:49:14.457 回答
0

如果你想在你需要的 ajax 请求中添加脚本,你应该删除请求选项evalScripts: true周围的引号。

$$('.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的答案。

于 2013-08-20T22:11:12.370 回答