<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的值。请问我哪里出错了? 谢谢!
<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的值。请问我哪里出错了? 谢谢!
用firebug可以明确看到:“post http://localhost:4622/qs/WebService/WS_Security.asmx/isUsernameAvailable 200 OK 25ms”
并且响应里也是应有的数据:{"d":true}这都还不能说明成功么?
success: function(msg) {
setUsernameAvailable(msg.d)
}
这里我没有写分号,应该是
success: function(msg) {
setUsernameAvailable(msg.d) ;
} 但发现仍然是不执行success里面的函数。 要怎么它才会执行啊
这算json object吗? 因为我的webservice对这个方法只返回一个bool值,再由webmethod自动转成{"d":true}
我实在看不出到底是什么原因这个success不执行函数了
如果执行了,检测获得的msg是否为JS对象。
error:function(XMLResponse){alert(XMLResponse.responseText);}
有可能是json格式错误了。