AJAX调用Web服务报告“未定义”

时间:2012-02-28 22:03:36

标签: c# jquery ajax

我正在使用.net / c#/ jQuery开发一个Web应用程序。

我想在用户注册页面中开发一个AJAX函数,以检测其他人是否已经选择了用户名。

由于寄存器表单位于用户控件中,并且scriptmanager控件位于母版页中,因此我在该用户控件中添加了ScriptManagerProxy控件。 js函数被包装到一个名为a.js。

的文件中

Web服务称为Vet.asmx。被叫时,它总是报告" Vet"是不确定的,但我不知道为什么。 ScriptManagerProxy的代码是:

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Menu/a.js" />
    </Scripts>
    <Services>
        <asp:ServiceReference Path="~/WebService/Vet.asmx" />
    </Services>
</asp:ScriptManagerProxy>

Vet.cs是

public Vet()
{

    //Uncomment the following line if using designed components 
    //InitializeComponent(); 
}

[WebMethod]
public string SearchUserName(string name)
{
    ...
}

我的a.js代码

jQuery("[id$='tb_UserName']").blur(function() {
    var login = jQuery("[id$='tb_UserName']").val();
    Vet.SearchUserName(login, SearchUserNameCallback);
});
function SearchUserNameCallback(result) {
    if (result == "Y") {
        jQuery('#userInfo').html("This user name has already been taken");
    } else {
        jQuery('#userInfo').html("Congratulations!You have a new user name.");
    }
}

我确定web方法和js功能除了找不到&#34; Vet&#34;之外没有任何问题。网络服务。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您的Vet课程是否饰有[System.Web.Script.Services.ScriptService]属性?

答案 1 :(得分:0)

我会使用启用了ajax的wcf服务。通过jQuery ajax进行连接绝对容易。 或者,如果不需要完整的Web服务,您可以将Web方法集成到您的页面中,并直接从客户端调用webmethod。