我已经看过一些问题,比如我要问的问题,但没有相同的问题。我有两个html文件,主要和今天。我想要做的是通过AJAX将today.html加载到main.html中的子div中。加载后的某个时候,我想从today.html调用一个驻留在main.html中的函数
在Main中我有这个功能:
function drawCircle (size){
alert('DRAWING');
}
这个AJAX加载:
$("#leftofad").ajax({
url: ":Today.html?r="+genRand(),
type: 'GET',
success: function(data) { },
error: function() { alert('Failed!'); },
});
这个div:
<div id="leftofad"></div>
在Today.html中我有
<script type="text/javascript">
$(document).ready(function(){
drawCircle (100);
});
</script>
负载进展顺利,但Today.html似乎没有识别drawCircle函数。我已经尝试了几种前体,包括这个。,窗口。和父...
我知道我可以在jQuery中使用AJAX加载器的回调方法,但是我不一定要在加载完成时调用drawCircle。我可能想等一下或者由于用户的操作而做。是否可以从加载AJAX的div中引用这些函数?如果没有,我可以使用像事件和监听器这样的替代方法来激活drawCircle函数吗?
答案 0 :(得分:2)
$("#leftofad").ajax
不合适。
jQuery的$.ajax
函数不使用选择器。
您可以使用的是load
:
$("#leftofad").load("Today.html?r="+genRand(), function(){
alert('loaded successfully!');
});
答案 1 :(得分:2)
由于您要将JS加载到页面中,请尝试直接调用该函数? (就绪功能将不会运行,因为主页已加载)
main.html中
<script type="text/javascript">
function drawCircle(size) { alert("DRAWING" + size); }
$(function() {
$("#leftofad").load("Today.html?r="+genRand(), function() {
alert('loaded successfully!');
});
});
</script>
<div id="leftofad"></div>
Today.html
<script type="text/javascript">
drawCircle(100);
</script>
如果这不起作用,我强烈怀疑在AJAX调用中返回的 JavaScript没有被执行。
在这种情况下,请参阅:How to execute javascript inside a script tag returned by an ajax response
答案 2 :(得分:0)
这里的每个人都有一些很好的答案,但我认为存在知识差距,我们缺少一些信息。如果我是你,我会在drawCirle之前的Today.html文件中添加一个警告。然后我会在Firefox中使用IE或Chrome开发工具或Firebug来运行此页面。显示警报时,您可以在javascript代码中添加断点。然后检查全局范围以尝试找到drawCirle ...
很抱歉这不是一个确切的答案,但是对于javascript文件,您需要使用调试工具。
答案 3 :(得分:-1)
虽然没有一个div的document.ready函数,但是有一个hack可以正常工作:
create your returning data as a full html page:
<html>
<head>
<script type='text/javascript'>
$(document).ready( function () {
do-this;
to-that;
....
});
</script>
</head>
<body>
<%
your possible vbscript
%>
the rest of stuff to be loaded into that div
</body>
</html>
然后,你可以从不同的页面加载中获得尽可能多的级联div加载......并且冲洗并重复......永远......用不同的DOCTYPE
实验以查看不同的结果。
编辑:
然后,当然,您使用
加载原始MAIN$('#thedivid').load('url-of-the-html-returning-page');
反过来,它可以在返回页面document.ready中进行非常相同的调用,例如; $('#thedivid-inthereturningdata-html-page').load('url-of-the-html-of-the-child-process-for-whaterver);
....等等。
继续,播放并制作精彩的基于ajax的应用......