在母版页上进行jQuery Ajax调用?

时间:2010-09-09 03:41:56

标签: asp.net jquery ajax web-services master-pages

我错过了什么吗?我正在尝试使用jquery对我的网站上的Web服务进行简单的ajax调用,每当我从母版页进行调用时,我都会收到500错误。没有人从主页上打过ajax电话,还是我只是疯了而且极度失去睡眠?

示例:

MasterPage.master

<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>

/Services/Test.asmx

<WebMethod()> _
Public Function HelloWorld() As String
   Return "Hello World"
End Function

看错了什么?我对Master Page有误解吗?请帮忙!

1 个答案:

答案 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

这解决了它,现在我可以在它所在的任何地方调用它。感谢帖子,但看起来我只是像往常一样忽略了事情......