0
this.encryptUserObject = function(userObj){
 var newpassword = [];
 var urlPost = '';
 console.log(password);
 urlPost = 'http:mysite.com/root/custome.svc/Encrypts'+ '/?' + "Phrase=test";
 $.ajax({
    url:urlPost,
    type:"GET",
    dataType:"json",
    contentType: "application/json",
    success: function(response){

        return response;
    },
    error:function(res){
        console.log("Bad thing happend! " + res.statusText);
    }
 });
}

これは私のクラスのメソッドの 1 つです。cosole.loginsuccessメソッドが機能し、結果 (暗号化テキストの新しいパスワード) が表示されますがnewpassword、コンソールに$.ajax値が表示されません。

これを引き起こしている可能性のある考え。

4

2 に答える 2

0

コンソール ロギングは ajax 成功の前に実行されます。設定後にパスワードを使用する場合は、成功コールバック内の関数に引数として渡すだけです。

this.encryptUserObject = function(userObj){
 var newpassword = [];
 var urlPost = 'http:mysite.com/root/custome.svc/Encrypts'+ '/?' + "Phrase=test";
 newpassword = $.ajax({
    url:urlPost,
    type:"GET",
    dataType:"json",
    contentType: "application/json",
    success: function(response){

        return response;
    },
    error:function(res){
        console.log("Bad thing happend! " + res.statusText);
    }
 });
 console.log(newpassword);
}
于 2013-11-13T10:46:32.687 に答える
0

ajax が成功する前に、console.log が実行されています。変数を確認するには、グローバル スコープに割り当てます (テストのみ)。

this.encryptUserObject = function(userObj){
 var newpassword = [];
 var urlPost = '';
 console.log(password);
 urlPost = 'http:mysite.com/root/custome.svc/Encrypts'+ '/?' + "Phrase=test";
 $.ajax({
    url:urlPost,
    type:"GET",
    dataType:"json",
    contentType: "application/json",
    success: function(response){
        window.newpassword = response; //here is update
        console.log(response);
    },
    error:function(res){
        console.log("Bad thing happend! " + res.statusText);
    }
 });
 //console.log("this is ur new password " + newpassword);
}

次に、ブラウザ コンソールに次のように入力します。

window.newpassword

ユーザーにパスワードを通知したい場合はsuccess、外部ではなくメソッドで行います。

于 2013-11-13T10:41:35.040 に答える