日期:2014-05-16  浏览次数:20613 次

请大家帮我看一下这个同步ajax请求是否有问题?
本帖最后由 isyuezhi 于 2012-11-15 08:36:05 编辑 请个位大神帮我看看这个同步请求的ajax是否有问题?

我的目的是想使用同步ajax(貌似只有同步的ajax才可以把success方法中的信息传给全局变量)获取到后台的一个变量,现在后台返回的是"isyes"字符串,并且为了测试同步请求,我将线程停了三秒钟,现在的情况如下所述:

本来我是打算在success的方法中获取到"isyes"这个变量,并且将result赋值为true,并把true值返回validatePassword方法,并将result的值返回出去。

但是我的电脑上实际的运行情况是当通过ajax到后台取数据的时候,正在取的过程中,到数第二行的alert方法已经弹出了,值为underfind,在ie9,chrome,ff中都是如此。

请问我写的这代码有问题么?错在哪?

//验证用户是否已经输入了密码进行了验证
function validatePassword() {
    var result;
    try {
        $.ajax({
            type: "POST",
            url: "default.aspx",
            data: "type=password",
            asyc: false,
            success: function (msg) {
                if (msg.toLowerCase() == "isno") {
                    result = false;
                    alert("对不起,你还没有进行身份验证!");
                } else {
                    result = true;
                }
            }
        });
    } catch (err) {
        result = false;
        alert("对不起,验证身份信息失败!");
    }
    alert(result);
    return result;
}


System.Threading.Thread.Sleep(3000);
Response.Write(UserInfo.isyes.ToString());
Response.End();

------最佳解决方案--------------------
//验证用户是否已经输入了密码进行了验证
function validatePassword() {
    var result;
    try {
        $.ajax({
            type: "POST",
            url: "default.aspx",
            data: "type=password",
            //asyc: false,
            async: false,///////你写错单词了,少了个n
            success: function (msg) {
                if (msg.toLowerCase() == "isno") {
                    result