0
私は、バックエンドコードに対する3つの単純なajaxリクエストを処理する汎用関数を作成しました。 systemName "AD"がコード0を返した場合、次の2つの関数はまったく実行されないはずです。 しかし、条件が満たされていれば、関数が実行されているように見えますsADsuccess = 1かどうか、dosentは関数が変数を設定するのを待ちます。 私の質問は次のとおりです:これをより良い方法で書くにはどうすればいいですか?可変用量は新しい値を設定します
var sADsuccess=1;
$("#frmPwdChg").submit(function(e) {
var formzData = $("#frmPwdChg").serialize();
ChangeSystemPwd('UPDATE/AD/USER/PASSWORD/',formzData,'AD',1,0,0)
if(sADsuccess=1){
ChangeSystemPwd('UPDATE/Cosmic/PASSWORD/',formzData,'Cosmic',0,0,0);
ChangeSystemPwd('UPDATE/Imprivata/PASSWORD/',formzData,'Imprivata',0,1,1);
}
else{
$("#btnPwdChg").removeClass("loading");
$("#btnPwdRes").addClass("hidden");
$("#btnLogout").removeClass("hidden");
$("#frmPwdChg")[0].reset();
}
e.preventDefault(); // avoid to execute the actual submit of the form.
});
function ChangeSystemPwd(APIurl,sFormData,sSystemName,loadStart,loadEnd,bEmptyForm){
var url = sUrl + APIurl
$("#btnPwdChg").addClass("loading");
$.getJSON({
type: "POST",
url: url,
data: sFormData,
success: function(response) //Om Ajax anropet lyckas
{
var sMessage=response[0].message;
var sCode=response[0].code
if(sCode===1) {
showGreen(sSystemName,sMessage)
sessionStorage.setItem(sSystemName, 'success');
}
else if(sCode===0) {
showRed(sSystemName,sMessage);
sessionStorage.setItem(sSystemName, 'failure');
if(sSystemName='AD'){
alert('AD')
sADsuccess=0;
}
}
else if(sCode===-1){
//anropet kom tillbaka som att det inte fanns någon användare. Visa ingenting
sessionStorage.setItem(sSystemName, 'no-user');
}
},
error: function(xhr,response){ //Om ajax anropet inte lyckas, hämta status och skriv ut ett meddelande
showErr(xhr,response,'#errResponse')
},
complete: function(xhr,data){
if (loadEnd==1){
$("#btnPwdChg").removeClass("loading"),$("#btnPwdRes").addClass("hidden"),$("#btnLogout").removeClass("hidden");
}
if (bEmptyForm==1){
$("#frmPwdChg")[0].reset();
}
}
});
}
約束を使用し、結果コードで解決してください。 [グローバル変数を非同期に変更すると動作しません](https://stackoverflow.com/q/23667086/1048572)。 – Bergi
'if(sADsuccess = 1){'は常に真ですが、*比較*ではなく*を割り当てています。さらに、同期操作と非同期操作を混在させています。ありがとう。 – David
ありがとう。 私はまだ多くのことを学ぶことがあることを理解しています。ポインタのためのthx ..私はこの周りに私の頭を包むことができるかどうかを見続ける... – Wyrm