2011-11-02 92 views
2

我见过几个问题,例如我会问的问题,但没有任何完全相同的问题。我有两个html文件,主要和今天。我想要做的是通过AJAX将to​​day.html加载到main.html中的子div中。负载之后的某个时间,我想打电话给驻留在main.html中从today.html功能称为“父”功能的AJAX

主内我有这样的功能:

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

什么是你的成功回调的内容?例如你如何将Today.html插入到Main.html中? – scottheckel

+0

你没有在你的标签池中放入任何与.NET相关的标签,所以我不明白为什么有人会认为它是一个.NET问题:)。只是一个观察.. –

+4

'$(“#leftofad”)。ajax'不是函数,它是'$ .ajax',而不是'$().ajax'。 –

回答

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

$("#leftofad").ajax是不正确的。

jQuery的$.ajax功能确实不是使用选择器。

什么可以用的是load:这里

$("#leftofad").load("Today.html?r="+genRand(), function(){ 
     alert('loaded successfully!'); 
}); 
+0

即使是这样,在ajax加载到div后没有$(document).ready事件。 – BNL

+0

我明白了。但是,将.ajax调用切换到.load不会使该函数可以从Today.html访问。 – user1026361

+0

好吧,有一个document.ready解决方法,工作得很好。经过几个月的尝试,我创建了一个解决方案......偶然,它的工作原理与任何真正的html或asp页面一样。请参阅下面的答案。 –

0

每个人都有一些很好的答案,但我相信这是知识差距,我们缺少一些信息。如果我是你,我会在drawCirle之前在Today.html文件中的脚本中添加一个警报。然后,我会使用IE或Chrome开发工具或Firefox中的Firebug运行此页面。当显示警报时,您可以在JavaScript代码中放置断点。然后检查您的全球范围,试图找到drawCirle ...

对不起,这不是一个确切的答案,但与JavaScript文件,你需要使用调试工具。

-1

,而没有真正的一个div一个的document.ready功能,还有就是工作就像这样一个黑客:

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> 

然后,您可以有不同网页多达级联格装加载和....冲洗并重复...永远....不同的DOCTYPE实验看到不同的结果。

编辑:

然后,当然,你加载原有的主用

$('#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应用程序....