在没有为 ASP.Net Web Forms 项目打开FriendlyUrls 的情况下,以下代码可以正常工作:
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: '/Default.aspx/GetData',
type: 'POST',
beforeSend: function( xhr ) {
xhr.setRequestHeader("Content-type",
"application/json; charset=utf-8");
},
success: function (result) {
var resultData = (result.d? result.d : result);
alert(resultData);
},
error : function(){
alert('error');
}
});
});
</script>
以下是页面方法(WebMethod)的服务器端代码:
[System.Web.Services.WebMethod]
public static string GetData()
{
return "Hello";
}
当我在浏览器中加载页面时,我可以看到响应为{ "d" : "Hello" }
,这是预期的结果。
现在,如果使用 NuGet 包添加友好 URLMicrosoft.AspNet.FriendlyUrls,相同的代码将无法工作。由于FriendlyUrls已打开,我将jquery ajax调用中的url更改为“/默认/获取数据”,但这样我就不会收到预期的结果。相反,我收到了 Default.aspx 页面的 html。
我正在努力找出为什么这不起作用,我唯一改变的是为FriendlyUrls添加nuget包!
我一直在努力寻找解决方案,我能找到的最接近可读的答案是:
将 jQuery 用于 AJAX 和 ASP.NET Webforms
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
请注意,给定答案中的所有相关帖子都不使用FriendlyUrls。我还看到一些答案表明 jquery ajax 调用可以与 MVC、WebAPI 一起正常工作,但我的项目仅限于使用 ASP.Net Web 表单。
我在这里做错了什么或者遗漏了什么吗?有人在他们的项目中遇到过同样的情况吗?如果是这样,您能回答一下这个问题如何解决吗?非常感谢您花时间阅读和回复。