我正在尝试将来自 ajax 请求的传入 URL 映射到 Global.asax 中的 Web 服务方法。Web 服务位于此路径/ajax/BookWebService.asmx
中,它有 2 个方法GetListOfBook
和GetListOfAuthor
.
我想在 Script 标签中使用 url:/ajax/book/list
而不是 url: 。/ajax/BookWebService.asmx/GetListOfBook
这是我的脚本和标记:
<script type="text/javascript">
$(function () {
$("#btnCall").click(function () {
$.ajax({type: "POST",
url: "/ajax/book/list",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var list = response.d;
$('#callResult').html(list);
},
error: function (msg) {
alert("Oops, something went wrong");
}
});
});
});
</script>
<div>
<div id="callResult"></div>
<input id="btnCall" type="button" value="Call Ajax" />
</div>
这是 Global.asax :
void Application_BeginRequest(object sender, EventArgs e)
{
var currentRequest = HttpContext.Current.Request.Url.AbsolutePath;
if (currentRequest.Contains("ajax/book/list")) {
HttpContext.Current.RewritePath("/ajax/BookWebService.asmx/GetListOfBook");
}
}
当我检查 FireBug 控制台时,这就是我得到的:
“NetworkError:500 内部服务器错误 - localhost:13750/ajax/book/list”
如果我将url:/ajax/book/list
更改为url:/ajax/BookWebService.asmx/GetListOfBook
它会按预期工作。
我正在使用 VS 2010 和 .NET 4。
我如何做 ajax 调用/ajax/book/list
而不是/ajax/BookWebService.asmx/GetListOfBook
?