2015-02-10 3 views
2

я получаю следующий ответ от сервера:Как получить значение из ответа JSON

{ «астры»: «3», «нарцисс»: «4», «роза»: «3»,» TotalItems ": 10," totalPrice ":" 31,90" } RESPONSE

и я хочу, чтобы поместить его в таблицу, которая будет выглядеть следующим образом:

enter image description here

Проблема заключается в том, что я делаю не знаю, как получить значения (для столбца «Количество»). Это мой код:

function processServerResponse(data) { 
if (data.products.length > 0) { 
    $("#orderForm").hide(); 
    $("#summaryForm").show(); 
    var html = ''; 
    $.each(data.products, function(key, value) { 
     html += "<tr><td>"+value.name+"</td><td>"+?????+"</td></tr>" 
    }); 
    $(html).appendTo("tbody"); 
    $("#totalItems").text(data.totalItems); 
    $("#totalPrice").text(data.totalPrice); 
} 

}

До этого, это то, как мой $ .ajax выглядит (это больше кода, вы не»должны прочитать его):

$("#orderForm button").click(function (e) { 
    e.preventDefault(); 
    var formData = $("#orderForm").serialize(); 
    $("#popup").show(); 
    $("body *").not("#popup").css("opacity", 0.5); 
    $("input").prop("disabled", true); 
    $.ajax({ 
     url: "http://localhost/", 
     type: "post", 
     data: formData, 
     dataType: "json", 
     dataFilter: function(data, dataType) { 
      primljeniOdgovor = $.parseJSON(data); 
      var cleanData = { 
       totalItems: primljeniOdgovor.totalItems, 
       totalPrice: primljeniOdgovor.totalPrice 
      }; 
      delete primljeniOdgovor.totalItems; 
      delete primljeniOdgovor.totalPrice; 
      cleanData.products = []; 
      for (prop in primljeniOdgovor) { 
       cleanData.products.push({ 
        name: prop, 
        quantity: data[prop] 
       }) 
      } 
      return cleanData; 
     }, 
     converters: { 
      "text json": function(data) { 
       return data; 
      } 
     }, 
     success: function(data) { 
      processServerResponse(data); 
     }, 
     complete: function() { 
      setTimeout(function() { 
       $("#popup").hide(); 
       $("body *").not("#popup").css("opacity", 1); 
       $("input").prop("disabled", false); 
      }, 1500); 
     } 
    }); 
}) 

Я получаю имя от этого ответа значением.name, но я понятия не имею, как получить это значение (количество)?

+1

'value.quantity' ?? – Brett

ответ

1

В коде есть ошибка.

Должно быть

   cleanData.products.push({ 
        name: prop, 
        quantity: primljeniOdgovor[prop] //not data[prop] 
       }) 

и не quantity: data[prop]. data - это единственный объект String. primljeniOdgovor - это проанализированный объект, содержащий значения свойств.

См. http://jsfiddle.net/t7n2tafk/

+0

В этом была проблема! После исправления этой ошибки все работает правильно (value.quantity). Большое спасибо andy – PeraMika

+0

Добро пожаловать. Пожалуйста, проверьте мой ответ как решение. Благодарю. – andy