0

このajaxリクエスト関数を機能させようとしていますが、netbeansは、次の関数が常に値を返すとは限らないという警告を出します。誰か助けてくれませんか。

function fpform(){
    var response='';
    var fpemail = $('#frgtpwd').val();
    //var fpemail = document.getElementById('frgtpwd').value;

    if (fpemail == ""){
        $('span#fperror').text("insert your emal address");
        //document.getElementById('fperror').innerHTML = "Insert your email address";
        return false;
    } else {
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (filter.test(fpemail)==false) { 
            $('span#fperror').text("Email address is not in valid format");
            //document.getElementById('fperror').innerHTML = "Email address is not in valid format";
            return false;
        } else {
            $("#loader").html('<img src="images/ajax-loader.gif" />');
            $.post("forgot_password_process.php", {
                email:fpemail
            }, function(response){
                response = response.trim();
            }).success(function () {
                if (response == 'yes'){
                    $("#fperror").html('<font color="green"><b>Your password has been reset now and emailed to you </b></font>');
                    $("#loader").hide('<img src="images/ajax-loader.gif" />');
                    return true;
                } else {
                    alert("your email address was not found");
                    $("#loader").hide('<img src="images/ajax-loader.gif" />');
                    $("#fperror").html('<font color="black"><b> Email address was not found in database!</b></font>');
                    return false;
                } 
            });
        }
    }
}
4

2 に答える 2

1

return true;コード内のステートメントがから戻っていませんfpform。代わりに、に与えられたコールバック関数から戻っています.success()。この関数が実行されるまでに、外部関数、fpformは長い間返されていました。ajaxを使用して関数から「戻る」唯一の方法は、コールバックを使用することです。


私があなたにコードを与える前に、あなたは他のたくさんの間違いを犯しました:

  1. あなたの電子メール正規表現は/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/、私の電子メールアドレスで失敗します。+も有効な文字です。正規表現を使用してメールアドレスを検証しないことを検討してください。

  2. $("#loader").hide('<img src="images/ajax-loader.gif" />')動作しません。まったく。あなたが欲しい$("#loader").empty()

  3. 上部で宣言する変数は、無名関数の1つでresponse引数によってシャドウされ、何の効果もありません。responseresponse = response.trim()


function fpform(callback) {
    var fpemail = $('#frgtpwd').val();

    if (fpemail == ""){
        $('span#fperror').text("insert your email address");
        callback(false);
    } else {
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (filter.test(fpemail)==false) { 
            $('span#fperror').text("Email address is not in valid format");
            callback(false);
        } else {
            $("#loader").html('<img src="images/ajax-loader.gif" />');
            $.post("forgot_password_process.php", {
                email:fpemail
            }).success(function(response) {
                response = response.trim();
                if (response == 'yes'){
                    $("#fperror").html('<font color="green"><b>Your password has been reset now and emailed to you </b></font>');
                    $("#loader").hide('<img src="images/ajax-loader.gif" />');
                    callback(true);
                } else {
                    alert("your email address was not found");
                    $("#loader").hide('<img src="images/ajax-loader.gif" />');
                    $("#fperror").html('<font color="black"><b> Email address was not found in database!</b></font>');
                    callback(false);
                } 
            }).error(function() { callback(false); });
        }
    }
}
于 2012-09-02T17:50:11.450 に答える
0

後に値を返す必要があります$.post(...).success(...);

于 2012-09-02T17:52:39.380 に答える