我试图在使用then
完成ajax返回后运行一个函数,但它似乎在返回之前运行。我的代码如下:
var existingUser = false;
$.ajax(
{
url: '/ajax/signup',
data: { signup_email: signupEmail },
type: 'post',
dataType: 'json',
success: function(data) {
if (data.message == 'The email address '+signupEmail+' has already been registered.') {
existingUser = true;
console.log('truth!')
}
}
}
)
.then(console.log(existingUser))
我希望记录
truth!
true
如果返回有预期的消息,而是记录
false
truth!
我在这里做错了什么?
答案 0 :(得分:1)
传递给then
的参数应该是一个函数。在您的情况下,console.log将立即执行,因此您将获得输出。
参考这两个例子 http://jsfiddle.net/9L7dD/12/ http://jsfiddle.net/9L7dD/13/
答案 1 :(得分:0)
这是因为启动ajax请求的函数调用在ajax请求完成之前完成。实质上:
您可以在console.log
处理程序中添加success
吗?
答案 2 :(得分:-1)
您的问题是您的ajax请求在履行承诺并接收响应时执行成功......以及非错误响应。 "然后"只需在运行ajax函数后执行,而不是在它被解析后(从您的URL获取响应)。看起来你真的不需要你的console.log在"然后"如果正确执行,您已经检查了成功函数。