我目前正在C#中创建一个网页作为学校项目。 我在文件中创建了一个WebMethod:
Default.aspx.cs
[WebMethod]
public static string MyWebMethod()
{
return string.Format("Hello From Server");
}
文件中的Ajax调用:
Default.aspx的
<script type="text/javascript">
function test() {
jQuery.ajax({
type: "POST",
url: "Default.aspx/MyWebMethod",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(dd, status) {
alert('Success' + JSON.stringify(dd) + " status: " + JSON.stringify(status));
},
error: function(dd) {
alert('There is error' + dd.responseText);
}
});
}
</script>
<input type="button" value="click me" onclick="test();" />
我在“MyWebMethod()”的开头插入了一个断点,但是当我调试时,断点永远不会被击中。
我现在已经和这个问题坐了大约4.5个小时,尝试了我在谷歌上找到的每一个例子,即使我下载了一个完整的例子即。 “Default.aspx”和“Default.aspx.cs”文件带有“工作”代码,我无法让它在我的解决方案中运行。
您是否需要启用某些设置才能使用JQuery,Ajax和WebMethods?
在我放入JSON.stringify(dd)之后,我能够收到错误消息:
json:{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
但是在寻找几个小时的解决方案后,我几乎放弃了。 当我尝试修复时,显然已经为其他人设置了该错误,它仍然不适用于我。
有谁知道如何使这项工作?
感谢您的时间
答案 0 :(得分:1)
你应该改变你的jquery ajax的url路径:
url: "Default.aspx/MyWebMethod",
您无需向其添加.aspx,只需添加到页面。
答案 1 :(得分:0)
假设您的方法是在Default.aspx
文件的代码隐藏中定义的,位于名为"Views"
的文件夹中,那么您的网址应该是这样的:
url: "/Views/Default.aspx/MyWebMethod",
答案 2 :(得分:-1)
注释掉App_Start文件夹的Routeconfig中的AutoRedirectMode将解决此问题
// settings.AutoRedirectMode = RedirectMode.Permanent;