<html xmlns="http://www.w3.org/1999/xhtml"><head><title> 无标题页</title>
<script src="../javascript/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
 var textUsernameId = '#ctl00_ContentPlaceHolder1_TextBox_Nickname';
var ValidUsernameId = '#ctl00_ContentPlaceHolder1_Validate_Username';var isNameAvai;function validUsername() {
        var username = $(textUsernameId).val();
        
        var avai = isUsernameAvailable(username);
        if (avai) {
            $(ValidUsernameId).text("");
            return true;
        } else {
            $(ValidUsernameId).text("用户名已被注册");
            return false;
        }
    }function isUsernameAvailable(name) {
        name = "{'name':'" + name + "'}";
        
        $.ajax({
            type: "POST",
            url: "../WebService/WS_Security.asmx/isUsernameAvailable",
            data: name,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                setUsernameAvailable(msg.d)
            }
        });
        return isNameAvai;
    }    function setUsernameAvailable(msg) {
        isNameAvai = false;
    }$(document).ready(function() {
        $(textUsernameId).blur(validUsername);
    });</script></head>
<body><form>
<input name="ctl00$ContentPlaceHolder1$TextBox_Nickname" type="text" maxlength="10" id="ctl00_ContentPlaceHolder1_TextBox_Nickname" /> 
            <span id="ctl00_ContentPlaceHolder1_Validate_Username"></span>
</form></body></html>以上代码是这样的, 我需要检查用户输入的用户名是否已被注册,如果没有被注册,则不显示任何信息,如果已被注册,则显示“用户已注册”jquery的ajax功能完好,可以正常取得webservice的内容,返回的数据是:{"d":true}
但我发现success: function(msg) {  setUsernameAvailable(msg.d)  } 这个方法并没有被调用,而是直接跳过,导致isNameAvai是undefined的值。请问我哪里出错了? 谢谢!

解决方案 »

  1.   


    用firebug可以明确看到:“post http://localhost:4622/qs/WebService/WS_Security.asmx/isUsernameAvailable 200 OK 25ms”
    并且响应里也是应有的数据:{"d":true}这都还不能说明成功么? 
      

  2.   

    找到一点:
    success: function(msg) { 
                    setUsernameAvailable(msg.d) 
                } 
    这里我没有写分号,应该是
    success: function(msg) { 
                    setUsernameAvailable(msg.d) ;
                } 但发现仍然是不执行success里面的函数。 要怎么它才会执行啊
      

  3.   

    另外一个就是,Jquery做的ajax请求,返回的是{"d":true} 
    这算json object吗? 因为我的webservice对这个方法只返回一个bool值,再由webmethod自动转成{"d":true} 
    我实在看不出到底是什么原因这个success不执行函数了
      

  4.   

    用alert探测一下success是否有执行,如果不执行,检测访问地址是否正确以及是否给出了相应的数据。
    如果执行了,检测获得的msg是否为JS对象。
      

  5.   

    看看是否发生了错误,加入:
    error:function(XMLResponse){alert(XMLResponse.responseText);}
    有可能是json格式错误了。
      

  6.   

    本机开了tomcat测试 发现没错……正常运行