1

我目前正在尝试运行一个适用于我的 LAMP 环境但不适用于 WAMP 环境的脚本:

$.ajax(
        {
            url: '<?php echo ROOT_DIR;?>/member/login-process',
            type: "post",
            data: $('form').serialize(),
            success: function(data)
            {
                if (data == 'success')
                {
                    setTimeout(function(){window.location.href = '<?php echo ROOT_DIR;?>/dashboard';}, 2000);
                }

                else
                {
                    $("#alert").html('<div class="alert alert-error"><i class="icon-exclamation-sign"></i> '+data+'</div>');
                }
            }
        });

当我在 LAMP 上尝试时,它工作正常:我被重定向了。使用 WAMP,我不知道为什么,但我收到以下错误消息(由“else”生成):

成功

我已经尝试过 typeof(data) 并且结果是“字符串”。因此,Ajax 查询返回的值是“success”字符串,那么为什么忽略“if”呢?

4

1 回答 1

1

尝试这个:

var go = $.ajax({
    type: 'POST',
    url: '<?php echo ROOT_DIR;?>/member/login-process',
    data: $('form').serialize()
})
.done(function(data) {
    console.debug("DATA:");
    console.debug(data);
    if (data == 'success')
    {
        setTimeout(function(){window.location.href = '<?php echo ROOT_DIR;?>/dashboard';}, 2000);
    }
    else
    {
        $("#alert").html('<div class="alert alert-error"><i class="icon-exclamation-sign"></i> '+data+'</div>');
    }
})
.fail(function(msg) {
    alert('Error: ' + msg);
})
.always(function() {
});

success一直是jQuery中成功回调的传统名称,定义为ajax调用中的一个选项。但是,由于实现$.Deferred更复杂的回调,done是实现成功回调的首选方式,因为它可以在任何延迟上调用。

于 2013-09-18T15:42:23.013 回答