假设我的 html 中有 3 个 div。 ID 是:
- 斯蒂芬
- 第二步
- 第三步
我想首先在stepone div上加载来自服务器的json数据,如果返回为“1”,则在stepone div上打印good。
然后在steptwo div中加载数据,数据也是json。基本上这就是过程,以下是我的代码:
$(document).ready(function(){
var loadingone = $.post("stepone.php");
.done(function(dataone){
objone = JSON && JSON.parse(dataone) || $.parseJSON(dataone); //get json return from server
if (objone.status == "1") {
$("#stepone").html("good");
var loadingtwo = $.post("steptwo.php")
.done(function(datatwo){
objtwo = JSON && JSON.parse(datatwo) || $.parseJSON(datatwo);
if (objtwo.status == "1"){
$("#steptwo").html("good");
}
else
{
$("#steptwo").html("bad");
}
});
}
else
{
$("#stepone").html("message" + objone.codeurl);
}
});
});
正如您所看到的,代码包含嵌套的 if 语句,看起来不太清楚。我想知道是否有更好的解决方案?谢谢 ===更新数据=== 这是我编辑后的代码,对吗?
var loadingone = $.post("stepone.php");
.done(function(dataone){
objone = JSON && JSON.parse(dataone) || $.parseJSON(dataone);
if (objone.status != "1"){
$("#stepone").html("bad" + objone.codeurl")
}
else{
$("#stepone").html("good");
var loadingtwo = $.post("steptwo.php");
.done(function(datatwo){
objtwo = JSON && JSON.parse(datatwo) || $.parseJSON(datatwo);
if (objtwo.status != "1"){
$("#steptwo").html("bad");
}
else
{
$("#steptwo").html("good");
}
}
}
最佳答案
否定你的表达。
而不是遵循这样的模式:
if A {
if B {
if C {
do stuff
}
else error C
}
else error B
}
else error A
试试这个:
if !A {
error A
return
}
if !B {
error B
return
}
if !C {
error C
return
}
do stuff
这样,您就可以保留错误及其各自的条件,并避免深层嵌套。
关于javascript - 关于JS嵌套if语句的更好解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113722/