2012-06-23 87 views
0

我有一個jQuery ajax調用,返回一個表的html。現在我需要讓用戶在桌面上執行一些JavaScript操作。ajax可以返回給頁面添加新的JavaScript函數嗎?

返回ajax響應是否包含javascript代碼,還是必須在頁面的第一次加載頁面中加載JavaScript代碼?

用戶可以選擇觸發'新'javascript。它不必在ajax調用上觸發。

回答

2

要回答實際問題,返回響應可以包含腳本。最簡單的是把它放在html之後,因爲ready事件已經在頁面中被觸發了,它正在被加載到

+0

所以我會讓服務器重新編譯一個html標記'

'然後'
1

您可以使用jQuery .ajax()提供的成功(或其他事件)回調來執行此JS操作。類似這樣的:

$.ajax({ 
    success: function(){ 
    // Perform JS action 
    } 
} 

jQuery API列出了所有可用於AJAX調用的此類事件回調。查詢this瞭解更多信息。

0

如果你想請求一個帶有ajax的腳本,它將在檢索時運行,那麼你可以使用jQuery的getScript()方法來檢索它,然後執行它。

每jQuery的文檔,getScript()是的縮寫:

$.ajax({ 
    url: url, 
    dataType: "script", 
    success: success 
}); 

這表明,jQuery的AJAX命令會自動處理返回的腳本你,如果你設置適當的數據類型。

0

你可以讓你的請求變量,並在設置後擴展它。

// Make the request to the server 
var dataID = $("#WhatINeedForAParameter").val(); 
var request = $.ajax({ 
    url: "PageOrControllerOrWebApi/MethodName", 
    type: "POST", 
    data: { id : dataID }, 
    dataType: "json" 
}); 

// When the request is done process 
// what you need done 
request.done(function(msg) { 
    alert('You got this ' + msg); 
}); 

// If the request failed you can 
// see what the problem was and 
// handle the situation accordingly 
request.fail(function(jqXHR, textStatus) { 
    alert("Your request failed: " + textStatus); 
}); 
1

返回的ajax響應可以包含javascript代碼作爲字符串。然後你可以評估(響應)。

+0

當jQuery ajax在腳本標記中返回時無需進行評估 – charlietfl

+0

當您使用eval時不需要腳本標記:-) –

+0

這對於漸進式增強如何工作? – charlietfl

0

您可以使用成功回調做,我覺得這可能是一個辦法,請嘗試

$.ajax({ 
    ....., 
    ....., 
    success: 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    $("#tableID").append(script); 
    }); 

我希望這會有所幫助。

+0

查看以這種方式加載的js的最佳方式是什麼?我正在嘗試使用Firebug,但我沒有看到動態加載的js。 – greg

相關問題