+ -
当前位置:首页 → 问答吧 → 好久没遇到人品级问题了,大家来看看这个弱智的问题,但是我就是解决不了

好久没遇到人品级问题了,大家来看看这个弱智的问题,但是我就是解决不了

时间:2011-12-19

来源:互联网

废话不多说, 上源码

JScript code

   function reg() {
              var txtName = $("#<%=txtName.ClientID%>");
              var lblName = $("#<%=lblName.ClientID%>");
              if (txtName.val().length == 0) {   //如果账号为空
                  lblName.text("×请输入用户名").css("color", "red");
                 return false;
              }
              else if (txtName.val().length < 6) {
                  lblName.text("×用户名不能少于6位").css("color", "red");
                  return  false;
              }
              else {
                  $.ajax({
                      type: 'POST', //用POST方式传输
                      dataType: 'json', //数据格式:JSON
                      url: 'checking.ashx', //目标地址
                      data: 'name=' + txtName.val(), //文本框里的用户名
                      //接收数据完毕
                      success: function (json) {
                          if (json.verify == '0') {
                              $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
                              alert('草泥马成功了');
                              return true;
                          } else {
                              $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
                              return false;
                          }
                      }
                  });
              }
                 return false;
          }



问题是无论怎样, 这个方法都是返回false; 我执行到$("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green"); 这狗日的还是给我返回false, js 大牛快来看看 , 100分属于你!!

作者: pengcong001   发布时间: 2011-12-19

看不懂JQ,我本身只会些JS,

你把最后一个花括号的前一行代码,也就是最后一行return false;
注释掉看下

作者: likevs   发布时间: 2011-12-19

function (json) 
{
  alert(json.verify的值是多少?)

  ...
}

作者: bearlin081001   发布时间: 2011-12-19

JScript code
$.ajax({
            url:"selectFakeAction.action",
            async:false,//设置同步

作者: Return_false   发布时间: 2011-12-19

在后台加个断点,看返回什么,是不是JSON格式的字符串。

作者: longxun_chen   发布时间: 2011-12-19

嗯,看看json.verify的值是什么,
如果 alert(json.verify) 看到的是 0 那么 if (json.verify+0 ==0)看看

作者: wangjicongqian   发布时间: 2011-12-19

success: function (json) {
  if (json.verify == '0') {
  $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
  alert('草泥马成功了');
  return true;
  } else {
  $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
  return false;
  }
  }
error :function(josn){
  alert(json)
}
______________________
如果后台返回的不是JSON格式的字符串,是走error指定的函数的。

作者: longxun_chen   发布时间: 2011-12-19

引用 3 楼 return_false 的回复:

JScript code
$.ajax({
url:"selectFakeAction.action",
async:false,//设置同步


正确,ajax默认异步执行。虽然ajax提交了,但是先返回下面的false

作者: fangxinggood   发布时间: 2011-12-19

“我执行到$("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green"); 这狗日的还是给我返回false”


呵呵,你这是异步执行啊,你执行了function (json) 函数,返回return true;

但这个值并不属于function reg() 这个函数的


JQ里我不懂,但是在纯JS里的,

代码在执行到这一块时:
else {
  $.ajax({
  type: 'POST', //用POST方式传输
  dataType: 'json', //数据格式:JSON
  url: 'checking.ashx', //目标地址
  data: 'name=' + txtName.val(), //文本框里的用户名
  //接收数据完毕
  success: function (json) {
  if (json.verify == '0') {
  $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
  alert('草泥马成功了');
  return true;
  } else {
  $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
  return false;
  }
  }
  });
  }


//这时候工作进程会新开一条线程去处理这个请求,也就是异步的说法
而本身的主线程(也就是reg()函数),则不会等待异步,在分好新线程服务于异步请求后,将继续执行自己当前线程的后继代码

//这里补充一下,自由微软官方的异步回调机制有个参数可以指定是同步或者异步执行Ajax的,不过有点烦,这个机制服务处理只能有一个,不灵活,所以我喜欢自己写

作者: likevs   发布时间: 2011-12-19

你要把验证和注册分开放,就是不要放在一个function里面。
或者像3楼说的设置同步,但是一般不建议这么做。

作者: codeingman   发布时间: 2011-12-19

引用 6 楼 longxun_chen 的回复:
success: function (json) {
if (json.verify == '0') {
$("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
alert('草泥马成功了');
return true;
} else {
$("#<%=lblName.Clie……


后台返回是JSON ! 设置同步。。我试试

作者: pengcong001   发布时间: 2011-12-19

顶一个。

作者: ywdfei   发布时间: 2011-12-19

引用 3 楼 return_false 的回复:
JScript code
$.ajax({
url:"selectFakeAction.action",
async:false,//设置同步


不行啊 ,设置了同步,虽然ajax方法返回true了, 但是reg()返回的还是false , 难道ajax返回的ture不属于reg() ????

作者: pengcong001   发布时间: 2011-12-19

不要设置同步,

两个方法解决

一是验证和执行分开

在ajax 成功的回调函数中调用执行方法

二是保持现有思路 用标记变量来区分

同样也是在 ajax 成功的回调函数中重新调用方法

作者: Sandy945   发布时间: 2011-12-19

热门下载

更多