Rumah  >  Soal Jawab  >  teks badan

javascript - Mengapa mengembalikan false dalam js tidak boleh menghalang pelaksanaan ke bawah

 //再次验证手机号码 格式是否正确
            var reg = /^1[3|5|4|8|7|][0-9]\d{8}$/;
            var r = phone.match(reg);
            if (r == null) {
                layer.open({
                    content: '手机号码格式不正确'
                    ,skin: 'msg'
                    ,time: 3 //2秒后自动关闭
                });
                return false;   //第一个return false是有效的
            }

            //再次验证手机号码是否已经存在
            $.post("__MODULE__/Login/ajaxCheckPhoneIsExist",{phone:phone},function(data,status){


                if(data=="手机号码已被注册"){

                    layer.open({
                        content: '该手机号码已经存在'
                        ,skin: 'msg'
                        ,time: 3 //2秒后自动关闭
                    });

                    return false;   //第2个return false无效
                }

            });
            
            
            alert("11111");

//Pemulangan pertama palsu adalah sah
//Pemulangan kedua palsu adalah tidak sah
Apa sebabnya

欧阳克欧阳克2686 hari yang lalu3890

membalas semua(5)saya akan balas

  • 世界只因有你

    世界只因有你2017-06-12 09:23:55

    Yang pertama return false soalan dipanggil serentak, jadi kesannya dapat dilihat;

    Kaedah

    $.post dilaksanakan secara tidak segerak, jadi apabila $.post方法是异步执行的,因此在$.post方法的回调函数里面return false的时候,其实是生效了的,但是在执行这句代码的时候,$.post外面的代码早就执行完成了,所以看不到效果而已。另外,在回调函数里面加这句代码并没有什么意义,因为即使是return,也是退出当前执行的函数,即$.post的回调函数,并不能阻止$.post berada di dalam fungsi panggil balik kaedah $.post, ia sebenarnya berkuat kuasa, tetapi apabila melaksanakan kod ini Apabila , kod di luar $.post telah pun dilaksanakan, jadi kesannya tidak kelihatan. Di samping itu, menambah kod ini pada fungsi panggil balik tidak masuk akal, kerana walaupun return keluar dari fungsi yang sedang dilaksanakan, iaitu, fungsi panggil balik $.post, dan Pelaksanaan kod di luar $.post tidak boleh dihalang.

    Jika ada kod yang perlu diletakkan $.post请求成功之后执行的,那就把代码放到$.post方法的回调函数里面去吧。例如题主如果本意想让alert('1111')在请求成功后通过条件判断执行,那可以alert('11111')dalam fungsi panggil balik kaedah $.post;

    Biar saya terangkan segerak dan tak segerak kepada subjek di sini Contohnya, contohnya, subjek sedang menulis kod dan berasa dahaga, jadi dia pergi mendidih air untuk minum. Dalam proses ini, subjek adalah bersamaan dengan kod penulisan ialah perkara yang sedang dijalankan oleh subjek Apabila dia berasa dahaga, dia akan mengambil air dan meletakkannya di sana untuk menulis kod. Dia hanya perlu tunggu sehingga air Setelah masak, baru keluarkan dan minum sendiri. Kod subjek adalah sama. $.post就发送一个请求,请求的过程中外部的js还是继续执行(并没有等待$.post请求返回结果),等到ajax请求返回了,再回调之前定义的回调函数。这里除了$.post

    Selain itu, saya mendapati bahawa ungkapan biasa soalan boleh dioptimumkan, saya secara peribadi berpendapat ia boleh ditulis sebagai

    /^1[34578]d{9}$/g

    balas
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:23:55

    return mengembalikan fungsi semasa anda adalah relatif kepada fungsi panggil balik acara klik, dan yang kedua adalah relatif kepada fungsi panggil balik permintaan ajax, ia tidak akan menghalang panggilan balik fungsi luar

    balas
    0
  • 学习ing

    学习ing2017-06-12 09:23:55

    Fungsi dalam pos ialah fungsi tak segerak dan hanya akan dipanggil selepas permintaan berjaya Sebelum permintaan kembali berjaya, kod akan terus dilaksanakan. Jadi kenyataan palsu kembali adalah tidak sah. Penyelesaiannya ialah meletakkan return false di luar fungsi tak segerak, bukan dalam fungsi tak segerak $.post().

    balas
    0
  • 某草草

    某草草2017-06-12 09:23:55

    $.post 是异步执行的,需要使用 $.ajax 并设置 async: false

    balas
    0
  • 巴扎黑

    巴扎黑2017-06-12 09:23:55

    Letakkannya pada tahap yang sama dengan alert(1111)

    balas
    0
  • Batalbalas