在我眼里,js是极其丑陋的。
同时很佩服那些js开发者。
//用户名是否存在
function IsUsernameExist(username) {
$.ajax({
url: "/WebService/Account.asmx/IsUsernameExist", //这个方法现在返回的是字符串'true'或者'false'
type: "post",
data: "username=" + username,
//async: false,
dateType: 'json',
success: function(result) {
var exist = false;
exist = result.d;
//alert(result.d);
return exist;
}
});
}
<script type="text/javascript">
var IsUserNameExist = true; function CheckUsername() {
alert(IsUserNameExist);
var username = $("#<%=Tb_UserName.ClientID %>").val();
IsUserNameExist = IsUsernameExist(username); //这个函数就是上面的函数 写在一个js文件里的
alert(IsUserNameExist);
} $(document).ready(function() {
$("#<%=Tb_UserName.ClientID %>").blur(function() {
//alert(1);
CheckUsername();
//alert(2);
});
});
</script>
同时很佩服那些js开发者。
//用户名是否存在
function IsUsernameExist(username) {
$.ajax({
url: "/WebService/Account.asmx/IsUsernameExist", //这个方法现在返回的是字符串'true'或者'false'
type: "post",
data: "username=" + username,
//async: false,
dateType: 'json',
success: function(result) {
var exist = false;
exist = result.d;
//alert(result.d);
return exist;
}
});
}
<script type="text/javascript">
var IsUserNameExist = true; function CheckUsername() {
alert(IsUserNameExist);
var username = $("#<%=Tb_UserName.ClientID %>").val();
IsUserNameExist = IsUsernameExist(username); //这个函数就是上面的函数 写在一个js文件里的
alert(IsUserNameExist);
} $(document).ready(function() {
$("#<%=Tb_UserName.ClientID %>").blur(function() {
//alert(1);
CheckUsername();
//alert(2);
});
});
</script>
success: function(result) {
var exist = false;
exist = result.d;
//alert(result.d);
return exist;
}
怎么能格式化成json呢?
把 /WebService/Account.asmx/IsUsernameExist 里的方法贴出来看看.
因为js可以识别字符串,所以我返回了字符串"True"或者"False" /// <summary>
/// 用户名是否存在
/// </summary>
[WebMethod]
public string IsUsernameExist(string username)
{
string result = string.Empty;
try
{
bool re = false;
//...
//读取数据库,判断用户名是否存在,并将结果赋值给re
//...
if (re == true)
{
result = "True";
}
else
{
result = "False";
}
}
catch (Exception e)
{
result = "True";
}
finally
{
}
return result;
}
result.d的值为undefined。
dataType怎么写 什么json的 我快崩溃了
//用户名是否存在
function IsUsernameExist() {
var username = $("#<%=Tb_UserName.ClientID %>").val();
$.ajax({
url: "/WebService/Account.asmx/IsUsernameExist", //这个方法现在返回的是字符串'true'或者'false'
type: "post",
data: "username=" + username,
//async: false,
//dateType: 'json',
success: function(result) {
var exist = false;
//exist = result.d;
//alert(result.d);
//return exist;
exist = (result == "true");
alert(exist);
//成功后需要做的事情在这里做.
CheckUsername(exist);
}
});
}
var IsUserNameExist = true; function CheckUsername() {
//alert(IsUserNameExist);
//var username = $("#<%=Tb_UserName.ClientID %>").val();
//IsUserNameExist = IsUsernameExist(username); //这个函数就是上面的函数 写在一个js文件里的
//alert(IsUserNameExist);
alert(exist);
} $(document).ready(function() {
$("#<%=Tb_UserName.ClientID %>").blur(function() {
//alert(1);
//CheckUsername();
IsUsernameExist();
//alert(2);
});
}); 因为是异步执行的,所有结果里面不会有返回值(不知道什么时候会返回值)帮你修改了代码,用这个代码执行就差不多了.ajax一般都是异步调用. 所以不设置返回值,如果需要对结果处理.就在他的success事件里面再处理.
那我在ajax里面加上async: false,那就变成同步的了,是不是就可以返回值了?
用户体验不好. 不建议这样.你的success是一个新方法, 返回的取不到.要在ajax的方法里面返回.
success: function(result) {
return eval(result.d); //如果返回值是C#里的True或者False就先toLowerCase()再eval()就变为bool型了,JS同C#一样,须区分大小写
}
我在success里直接return 可以么?
有个疑问:
你上面的代码是在success里调用了函数CheckUsername(exist);
但实际上CheckUsername() 这个函数是没有参数的,不知道这是jquery ajax里的特殊的调用方式还是你写错了?
首先创建一个xmlHttpRequest的对象之后xmlHttp.readyState的值是0了,
然后xmlHttp.onreadystatechange = handlestatechange没有运行。
紧接着是open(),这个函数发生了之后xmlHttp.readyState的值是1了,
那么就会有一个断点在Open()函数处断开,保留现场,
紧接着又返回到xmlHttp.onreadystatechange = handlestatechange运行,
然后再执行Send()函数,这个函数发生了之后xmlHttp.readyState的值是2了,
接着又返回到xmlHttp.onreadystatechange = handlestatechange运行。
以此类推
jq的文档里面写的.
jQuery.ajax([options]) 返回值:XMLHttpRequestjQuery.ajax([options])function CheckUsername(){.....}
呵呵,是缺少参数.
应该写成 function CheckUsername(exist){....}
你那个.d是什么东西啊 而且webservice返回的东西好像是XML吧 我觉得你最好是用 流文件来做,而且要缓存设置成false