3

我只是尝试做最简单的 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

但它总是返回错误。

4

2 回答 2

2

有几件事。

首先,这将有助于获取有关错误对象的更多信息。最好的方法是更新您的错误函数以处理 jquery 支持的签名,即error(jqXHR, textStatus, errorThrown)“errorThrown”将有更多信息。(请参阅此 API 文档)您的代码可能看起来像这样,包括它。

<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。)

于 2012-07-04T16:24:24.920 回答
0

对于 DNN,请试试这个。

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

于 2016-12-28T11:03:35.397 回答