2017-01-06 14 views
2

次のJavaScript/jQueryコードがあります。最初の結果に基づく2番目のAJAX

//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ではコードを取得し、このコードに基づいて2番目のAJAXを呼び出します。

は最初のAJAXが呼び出されているときに私が最初にそれが正常に動作しますasync=falseを設定したくないので、それ以外の場合は「doesnの、(最初のAJAXはcodeした後、第2 AJAXはcodeパラメータを適切に呼び出されて返されます)仕事。

私は約束を加えなければならないと思いますが、そのような場合にはどうすればよいか分かりません。

ご協力いただければ幸いです。

+2

。 JavaScriptコードは、ajax呼び出しが完了する前に続きます。それが完了するとdoneコールバックは –

+1

の.done' '内部で2番目のAjaxを移動 –

+0

と呼ばれています。 – user3378165

答えて

2
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() 
+0

ありがとうございました! – user3378165

+0

@ user3378165 Urウェルカムハッピーコーディング –

1

2番目のajax要求を関数内にラップし、最初のajax要求が完了したときにその関数を呼び出します。

function FirstAjax() { 
    $.ajax({ 
     type: 'GET', 
     url: '/API/User/GetCode/'+ $("#email").val(), 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(data) 
    }).done(function (data) { 
     SecondAjax(data) 
    }).fail(function() { 
     code = ""; 
    }); 
} 

function SecondAjax(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); 

} 
FirstAjax(); 
+0

ありがとうございました! – user3378165

1

方法

//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; 
    //Second AJAX 
     var nextData = { 
     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(nextData) 
    }).done(function (data) { 
     var result = "Success"; 
     var message = "Verify your email address to confirm your account."; 
     resultPage(result, message); 
    }).fail(showError); 
}).fail(function() { 
    code = ""; 
}); 
を行わアヤックスの内側に二AJAXを入れ@SandeepNayakが言うWxactly最初の1
関連する問題