2011-11-02 86 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應用程序....