2012-06-20 3 views
0

Я сделал класс, который у меня есть, но я считаю, что он неэффективен, потому что я погружаюсь в DOM 3 раза, когда это может быть 1 раз. Я не думаю, что вам нужно, чтобы увидеть остальную часть кода для этого, так что я только размещения неэффективной части, чтобы держать вещи опрятными:как объединить эти вызовы ajax

function showSelectedAttr(){ 

    var productID = <?php echo $product_info['products_id'];?>; 
    var sizeID = 0; 
    var tallID = 0; 
    var colID = 0; 

    $(".sizeopt").each(function() { 
      if ($(this).is(':checked')) sizeID = $(this).val();       
    }); 

    $(".tallopt").each(function() { 
      if ($(this).is(':checked')) tallID = $(this).val();       
    }); 

    $(".mine_color").each(function() { 
      if ($(this).is(':checked')) colID = $(this).val();       
    }); 

    $.ajax({ 
       type: "POST", 
       url: 'get_product_attribute.php', 
       data: "product_id="+ productID +"&size_id="+ sizeID, 
       success: function(response) {  
        $("#attr_container").html(response); 
       } 
    }); 

    $.ajax({ 
       type: "POST", 
       url: 'get_product_attribute.php', 
       data: "product_id="+ productID +"&size_id="+ tallID, 
       success: function(response) {  
        $("#attr_container_tall").html(response); 
       } 
    }); 

     $.ajax({ 
       type: "POST", 
       url: 'get_product_attribute.php', 
       data: "product_id="+ productID +"&size_id="+ colID, 
       success: function(response) {  
        $("#attr_container_color").html(response); 
       } 
    }); 

} 

Как вы можете видеть Аякс апи называется 3 отдельно раза. Есть лучший способ сделать это?

ответ

1
function showSelectedAttr() { 

    var productID = <?php echo $product_info['products_id'] ?>; 
    var sizeID = 0; 
    var tallID = 0; 
    var colID = 0; 

    $(".sizeopt").each(function() { 
     if ($(this).is(':checked')) sizeID = $(this).val();       
    }); 

    $(".tallopt").each(function() { 
     if ($(this).is(':checked')) tallID = $(this).val();       
    }); 

    $(".mine_color").each(function() { 
     if ($(this).is(':checked')) colID = $(this).val();       
    }); 

    $.ajax({ 
     dataType:"json", 
     type: "POST", 
     url: 'get_product_attribute.php', 
     data: { 
      productId : productID, 
      sizeId : sizeID, 
      tailId : tailID, 
      colId : colID 
     }, 
     success: function(response) {  
      $("#attr_container").html(response.Text); 
      $("#attr_container_tall").html(response.Tall); 
      $("#attr_container_color").html(response.Color); 
     } 
    }); 
} 

Response является JSON формат {Text: "value", Tall: "value", Color: "value" }

+0

Пожалуйста, поставить некоторые усилия в правильно форматировать ваш ответ. Спасибо. – Tadeck

Смежные вопросы