簡體   English   中英

jQuery Ajax響應中定義的調用函數

[英]Calling function defined in jquery ajax response

我正在對test.php內的php頁面('test.php')進行ajax請求是

<script type="text/javascript">
 function test() {
alert('test');
}
</script>

<div id="abc">some normal content too</div>

現在,此功能對於每個頁面加載都是唯一的,即它是通過php生成的,用於執行不同的操作

因此,我的問題是如何調用該函數test();。

正如jquery認為響應只是文本,所以它不會評估它

jQuery具有返回的數據類型

一個是腳本,另一個是html

但是它似乎並沒有混合在一起。

我怎樣才能解決這個問題?

jQuery的.load()函數評估<script>的響應內容的標簽,但只有當你調用.load() 涉及選擇退出之前,它插在DOM響應的一部分。

因此,此調用:

 $('#myContainer').load("/some/url", function() { /* ... */ });

將導致運行任何腳本內容,但這:

 $('#myContainer').load("/some/url #stuffIWant", function() { /* ... */ });

將不會。 我不知道為什么會這樣,但確實如此。

如果您以第一方式進行加載,請理解,直到加載完成,您才能使用定義為全局函數的任何內容(或全局的任何內容)。 從而:

$('#someplace').load(url, function() { } );
newGlobalFunction("hi");

將無法工作,因為在異步請求完成之前不會定義“ newGlobalFunction”。 因此,這應該起作用:

$('#someplace').load(url, function() {
  newGlobalFunction("hi");
});

如果您的ajax結果只不過是腳本內容,那么您也可以考慮不將其包裝在<script>標記中,而自己進行評估!

您是否嘗試過將其作為外部文件加載? 外部文件可以是php頁面,也可以是生成JS代碼。

br
保羅

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM