使用带dotnetnuke的jquery ajax调用

时间:2012-07-03 18:12:48

标签: jquery ajax dotnetnuke

我只想尝试做最简单的ajax调用:

<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

但它总是会返回错误。

2 个答案:

答案 0 :(得分: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中使用您的方法,则无法直接调用它们。)

您的网址很可能需要像/DesktopModules/MyModule/module.aspx/testusb或类似名称。 (还要确保使用适当的属性将该方法标记为ScriptService。)

答案 1 :(得分:0)

对于DNN,请试试这个。

//要允许使用ASP.NET AJAX从脚本调用此Web Service,请取消注释以下行。     [System.Web.Script.Services.ScriptService]