Ajax GET请求成功但变量未设置

时间:2013-11-13 10:34:13

标签: jquery ajax

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);
    }
 });
}

这是我班上的方法之一。 cosole.log方法中的success正在运行,显示结果(加密文本中的新密码),但控制台newpassword中的$.ajax打印没有值。

知道可能导致这种情况的原因。

2 个答案:

答案 0 :(得分:0)

你的console.log在ajax成功之前运行。要检查变量,请将其分配给全局范围(仅用于测试):

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方法,而不是外部!

答案 1 :(得分:0)

控制台日志记录在ajax成功之前执行,如果要在设置密码后使用密码,只需将其作为参数传递给sucess回调中的函数

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);
}