我目前正在努力解决网站上与AJAX相关的问题
目标如下:
有一个“简单”的HTML页面,其中包含一些链接和内容。
如果您点击某个链接,我想打开一个包含链接(来自href)的文件,该文件覆盖在页面中。页面中的内容当然是用新的div(叠加的)加载AJAX。
在这个新的重叠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事件之后加载的元素。
答案 0 :(得分:1)
答案 1 :(得分: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 。