日期:2014-05-16  浏览次数:20405 次

js if嵌套优化问题
html基本是这样,有三个div,使用ajax从php获得json数据,然后当第一个div加载时返回1,表示成功,接下来就去加载第二div,当第二div同样返回1的时候再去加载第三个,这样。下面是js代码

var loadingone = $.post("stepone.php"); 
posting.done(function(loadingone){
objone = JSON && JSON.parse(dataone) || $.parseJSON(dataone);
if (objone.status == "1") { //获得返回值,1则是 成功
$("#stepone").html("good"); //第一个div显示成功
                         var loadingtwo = $.post("steptwo.php); //加载第二个div
                         posting.done(function(loadingtwo){
                                    //在此处就是第二个Div显示成功,然后以此类推加载第三个div
                                             }
}
else
{
$("#stepone").html("<p><a href='" + objone.codeurl + "'>点击进入授权页面</a></p>")
}

现在嵌套过多肯定不好,所以想问问如何优化
或者说,本身html加载div的方式可以别的方式优化?
------解决方案--------------------
你做成一个函数的形式不久好了?


     function getNextUrl(step) {
         switch (step) {
             case '1': return 'stepone.php';
             case '2': return 'steptwo.php';
             //......更多步骤,如果你名字起得规则点,如step0.php,step1.php...都不用switch,直接 return 'step'+step+'.php';
         }
     }
     function Post(url, step) {
         $.post(url, function (data) {
             //分析data进行操作
             step++;
             Post(getNextUrl(step), step)
         });
     }
     Post('第一个ajax请求的地址', 0);

------解决方案--------------------
顶楼上,用SWITCH就可以了。