我错过了什么吗?我正在尝试使用jquery对我的网站上的Web服务进行简单的ajax调用,每当我从母版页进行调用时,我都会收到500错误。没有人从主页上打过ajax电话,还是我只是疯了而且极度失去睡眠?
示例:
<script type="text/javascript">
$(document).ready(function () {
$.ajaxSetup({ dataType: "json", contentType: "application/json; charset=utf-8" });
$.ajax({
url: '<%= ResolveUrl("~/Services/Test.asmx/HelloWorld") %>',
success: function (data) {
alert(data);
},
error: function (xhr, err) {
alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
});
});
</script>
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
看错了什么?我对Master Page有误解吗?请帮忙!
答案 0 :(得分:4)
好的,我相信我已经找到了问题所在。现在我开始认为我只是困了。我遇到了几个问题,我会为其他人列出这些问题,以确保他们将来不会这样做:
1)我记得以前读过另一篇文章解释说通过jQuery库调用ajax不喜欢数据的空对象所以即使它是一个空数组也必须列出。所以,这正是我添加的内容:
$.ajax({
dataType: "json",
contentType: "application/json; charset=utf-8",
type: 'POST',
data: [],
url: '<%= ResolveUrl("~/Test.asmx/HelloWorld") %>',
success: function (data) {
alert(data);
},
error: function (xhr, err) {
//alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
//alert("responseText: " + xhr.responseText);
$('#ajaxResponse').html(xhr.responseText);
}
});
2)一旦我超越了jQuery ajax问题,我就会收到来自Web服务本身的错误消息。警告我,为了能够从脚本调用Web服务,我必须添加以下行:
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Test
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "[{""Hello World""}]"
End Function
End Class
这解决了它,现在我可以在它所在的任何地方调用它。感谢帖子,但看起来我只是像往常一样忽略了事情......