0

サインアップ フォームでコールバック関数を使用して、ユーザー名の有効性を確認しています。validate[必須,funcCall[username_check]]..

ここにJavaScript関数があります

function username_check(field, rules, i, options) {
    var username = $('#username').val();
    if (username == "" || username.length < 4) {
        return options.allrules.validate2fields.alertText;
    } else {
        jQuery.ajax( {
            type: "POST",
            url: "<?php echo site_url('signup/validate');?>",
            data: 'username=' + username,
            cache: false,

            success: function (response) {
                if (response == 1) {
                    return options.allrules.validate2fields.alertText;
                } else {
                    return options.allrules.validate2fields.alertError;
                }
            }
        });
    } 
}
$(document).ready(function(){
    $("#signup").validationEngine();
});

検証中、alertText は表示されません。$.ajax プロンプトの外に以下の ifelse 条件を書くと、プロンプトが表示されます

      if (response == 1) {
          return options.allrules.validate2fields.alertText;
      } else {
          return options.allrules.validate2fields.alertError;
      }

これはバグですか、それとも何か間違っていますか。

4

1 に答える 1

2

非同期AJAX呼び出しを同期として使用しているようです。成功コールバック関数内のコードは、そのAJAX-success-callback関数の結果として返された結果であっても、実行されていない可能性があります。検証エンジンには、AJAX検証用の特定の設定があります。ここまたはここを参照してください: jQuery検証エンジンAJAXプロトコル

于 2013-01-07T07:41:20.863 に答える