我有以下JavaScript / jQuery代码,有时可以正常工作,有时不能。
//First AJAX
$.ajax({
type: 'GET',
url: '/API/User/GetCode/'+ $("#email").val(),
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
}).done(function (data) {
code = data;
}).fail(function () {
code = "";
});
//Second AJAX
var data = {
Email: $("#email").val(),
Password: $("#password").val(),
ConfirmPassword: $("#confirmPassword").val(),
Code: code,
Type: "External"
};
$.ajax({
type: 'POST',
url: '/API/Account/Register',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
}).done(function (data) {
var result = "Success";
var message = "Verify your email address to confirm your account.";
resultPage(result, message);
}).fail(showError);
在第一个AJAX中,我得到一个代码,并基于此代码称为第二个AJAX。
因为我不想在第一次调用第一个AJAX时设置
async=false
,所以它工作正常(第一个AJAX返回code
,然后使用code
参数正确调用第二个AJAX),否则不起作用。我认为我必须添加一个承诺,但是我不确定在这种情况下如何实现。
任何帮助,将不胜感激。
最佳答案
function getCode() {
$.ajax({
type: 'GET',
url: '/API/User/GetCode/'+ $("#email").val(),
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
}).done(function (data) {
sendData(data)
}).fail(function () {
code = "";
});
}
function sendData(code) {
var data = {
Email: $("#email").val(),
Password: $("#password").val(),
ConfirmPassword: $("#confirmPassword").val(),
Code: code,
Type: "External"
};
$.ajax({
type: 'POST',
url: '/API/Account/Register',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
}).done(function (data) {
var result = "Success";
var message = "Verify your email address to confirm your account.";
resultPage(result, message);
}).fail(showError);
}
getCode()