2016-07-28 118 views
0

是否有理由为什么我的Ajax调用不会在if语句内工作?我可能在这里做了一些根本性的错误,因为我对JS或Ajax没有太多的经验。由于JQuery Ajax调用不工作If语句

工作js函数是:

function filter(varType, varValue) { 
    var $products = $('#products'); 

    $.getJSON($SCRIPT_ROOT + '/filterSize/' + varValue) 

    .success(function (data) { 
     $products.empty(); // clear html from container 
     var elt0 = '<div class="page-content"><h1 id="shoes">Shoes</h1></div>'; 
     $products.append(elt0); 

     if (Object.keys(data.shoes).length === 0) { 
      none = '<span class="noresults">No results</span>'; 
      $products.append(none); 
     } 

     else { 
      var numItems = (Object.keys(data.shoes).length); 
      for (index = 0; index < numItems ; ++index) { 
       var elt1 = Flask.url_for("static", {"filename": data.shoes[index].img1}); 
       var elt2 = '<div id="item" class="col-md-4"><div class="products"><a href="shop/item/' + data.shoes[index].id + '"><h5>' + data.shoes[index].name + '</h5><img src="' + elt1 + '" alt="" width="200px" height="125px"></a></div>'; 
       $products.append(elt2); 
      } 
     } 
    }); 
} 

但如果我这样做,它突然停止工作:

function filter(varType, varValue) { 
    var $products = $('#products'); 

    var x = 5 
    var y = 6 

    if (y > x) { 
     $.getJSON($SCRIPT_ROOT + '/filterSize/' + varValue) 
    } 

    .success(function (data) { 
     $products.empty(); // clear html from container 
     var elt0 = '<div class="page-content"><h1 id="shoes">Shoes</h1></div>'; 
     $products.append(elt0); 

     if (Object.keys(data.shoes).length === 0) { 
      none = '<span class="noresults">No results</span>'; 
      $products.append(none); 
     } 

     else { 
      var numItems = (Object.keys(data.shoes).length); 
      for (index = 0; index < numItems ; ++index) { 
       var elt1 = Flask.url_for("static", {"filename": data.shoes[index].img1}); 
       var elt2 = '<div id="item" class="col-md-4"><div class="products"><a href="shop/item/' + data.shoes[index].id + '"><h5>' + data.shoes[index].name + '</h5><img src="' + elt1 + '" alt="" width="200px" height="125px"></a></div>'; 
       $products.append(elt2); 
      } 
     } 
    }); 
} 
+0

因为它是无效的javascript,您会在开发人员工具控制台中看到的东西 - 您在if' – Suever

+0

停止工作之后的行中丢失了一个分号 - 您得到了哪些错误 –

回答

1
if (y > x) { 
      $.getJSON($SCRIPT_ROOT + '/filterSize/' + varValue) 

     .success(function (data) { 
      $products.empty(); // clear html from container 
      var elt0 = '<div class="page-content"><h1 id="shoes">Shoes</h1></div>'; 
      $products.append(elt0); 

      if (Object.keys(data.shoes).length === 0) { 
       none = '<span class="noresults">No results</span>'; 
       $products.append(none); 
      } 

      else { 
       var numItems = (Object.keys(data.shoes).length); 
       for (index = 0; index < numItems ; ++index) { 
        var elt1 = Flask.url_for("static", {"filename": data.shoes[index].img1}); 
        var elt2 = '<div id="item" class="col-md-4"><div class="products"><a href="shop/item/' + data.shoes[index].id + '"><h5>' + data.shoes[index].name + '</h5><img src="' + elt1 + '" alt="" width="200px" height="125px"></a></div>'; 
        $products.append(elt2); 
       } 
      } 
     }); 
} 

这是有效的语法。您需要移动括号内的.success。

1

你过早关闭了if-语句的花括号:

if (y > x) { 
    $.getJSON($SCRIPT_ROOT + '/filterSize/' + varValue) 
//} <-- TOO EARLY 
    .success(function (data) { 
     .... 
    }); 
} <-- SHOULD BE HERE INSTEAD 

在此之后结束if声明回调。