2012-07-03 32 views
3

我只是試圖做的最簡單的Ajax調用jQuery的AJAX調用像這樣:使用與DotNetNuke的

<script type="text/javascript"> 
$.ajax({ 
    type: "POST", 
    url: "module.aspx/testSub", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: false, 
    success: function() { 
     alert("Works!"); 
    }, 
    error: function(){ 
     alert("Error"); 
    } 
}); 
</script> 

這裏是我隱藏

Public Sub testSub() 
    lblTest1.Text = "HelloWorld!!!1!" 
End Sub 

但它總是返回一個錯誤。

+0

該方法應該是靜態的。另外,你得到的錯誤是什麼? – Praveen

+0

您是否想將我的方法更改爲公共共享子?並且我得到的錯誤是我自己創建的警報^ – zarichney

+0

jQuery自動將錯誤文本和服務器響應轉發給您的錯誤回調 - 您只需準備回調即可接收這些參數。查看[jQuery文檔](http://api.jquery.com/error/)。請編輯問題以包含返回的錯誤文本和服務響應。 – Utkanos

回答

2

一些事情。

首先,它將有助於獲得更多關於錯誤對象的信息。最好的辦法是更新你的錯誤函數來處理由jquery支持的簽名,它是error(jqXHR, textStatus, errorThrown)「errorThrown」將會有更多的信息。 (See this API Doc)您的代碼可能與此包括在一起。

<script type="text/javascript"> 
$.ajax({ 
    type: "POST", 
    url: "module.aspx/testSub", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: false, 
    success: function() { 
     alert("Works!"); 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert("Error:" + errorThrown); 
    } 
}); 
</script> 

現在,除此之外,我相信你有一些問題的路徑。在DNN內,您的模塊位於/ DesktopModules/ModuleName /內。您的自定義ASPX頁面中包含您的服務方法。 (注意:如果你沒有使用自定義的aspx頁面,並且在你的ascx中執行你的方法,你將不能直接調用它們。)

最有可能你的url需要類似/ DesktopModules/MyModule/module.aspx/testusb或類似的。 (也請務必使用正確的屬性將該方法標記爲ScriptService。)

+0

你是什麼意思將我的方法標記爲ScriptService? – zarichney

+0

嗨,我有相同的代碼,但有一個錯誤引發'/DesktopModules/MyModule/module.aspx/function'沒有找到404。是否有任何可能的解決方案,以該錯誤?我沒有任何線索.. == – Nerdar

+0

當你得到這個錯誤,這很可能是一個路徑問題。嘗試直接提出請求並確保您的頁面在那裏等 –

0

對於DNN請嘗試此操作。

//爲了允許使用ASP.NET AJAX從腳本調用此Web服務,請取消註釋以下行。 [System.Web.Script.Services.ScriptService]