【发布时间】:2015-12-16 07:14:44
【问题描述】:
以下代码在没有为 ASP.Net Web 窗体项目打开 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 包 Microsoft.AspNet.FriendlyUrls 添加友好 URL,则相同的代码将不起作用。由于打开了 FriendlyUrls,我将 jquery ajax 调用中的 url 更改为 "/Default/GetData",但是我不会收到预期的结果。相反,我收到的是 Default.aspx 页面的 html。
我正在努力找出为什么这不起作用,我唯一改变的是为 FriendlyUrls 添加 nuget 包!
我一直在努力寻找解决方案,我能找到的最接近可读的答案是:
Using jQuery for AJAX with ASP.NET Webforms
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
请注意,给定答案中的所有相关帖子都不使用 FriendlyUrls。我还看到一些答案表明 jquery ajax 调用可以与 MVC、WebAPI 一起正常工作,但我的项目仅限于使用 ASP.Net Web 窗体。
我在这里做错了什么或遗漏了什么吗?有没有人在他们的项目中遇到过相同的情况?如果是这样,您能回答如何解决这个问题吗?非常感谢您花时间阅读和回复。
【问题讨论】:
-
看看这个答案是否有帮助:stackoverflow.com/questions/23033614/…(向下滚动)。
-
@wazz 感谢您回答我的问题。你提到的帖子通过一些修改帮助我得到了我的问题的答案。有关详细信息,请参阅我的答案。谢谢!
标签: jquery asp.net ajax webforms friendly-url