我对 javascript 很陌生,我遇到了 jquery 和 AJAX 请求的第一个问题。我在页面上有很多切换按钮,当我单击它们时,我必须要求 REST 服务来查询是否可以。如果可以的话,我会显示一个警告框,其中包含“你确定吗”blablabla,如果不能,则会显示一个警告框,表明用户不能。
这是主要问题,如果我使用 async:false 它可以工作,但据我所知,这不是一个好的做法(chrome 记得我不是),那么最好的方法是什么?
我正在使用主干,我不想为每个切换设置一个方法来处理点击,并设置第二个方法来处理回调。
这样做的好方法是什么?
startService: function(serviceName){
var confirm = true;
var $paid = this.model.getPaidTo(serviceName);
console.log(this.model.getPaidTo(serviceName));
//Here the consol.log is always undefined if I use async: true
if ($paid == 'false'){
confirm = confirm("Are you sure to start" + this.model.services[serviceName].price + ". Continue ?");
}
if(confirm){
console.log("start " + serviceName + " service")
return true;
}
return false;
},
型号:
getPaidTo: function(serviceName){
var self = this;
var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;
$.ajax({
type: "GET",
url: Url,
data: {},
success: function(data){
return data.data.service;
},
error: function(data){
self.error = 'error';
return 'error';
}
});
}
致以诚挚的问候
最佳答案
谢谢斯拉克斯,
它工作得很好。这是我修改的方法:
startService: function(serviceName){
var self = this;
var confirm = true;
//var $paid = this.model.getPaidTo(serviceName);
this.model.getPaidTo(serviceName).done(function(data){
$paid = data.data.service;
if ($paid == 'false'){
confirm = window.confirm("Are you sure to start" + self.model.services[serviceName].price + ". Continue ?");
}
if(confirm){
console.log("start " + serviceName + " service");
}
}).fail(function(){
alert('error');
});
},
型号:
getPaidTo: function(serviceName){
var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;
return $.ajax({
type: "GET",
url: Url
});
}
希望对其他人有帮助。
致以诚挚的问候
关于javascript - jquery(a)同步请求等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274245/