2015-02-19 1 views
1

Я использую метод Jquery пост, чтобы получить данные из PHP-файл, который возвращаемые аа многомерный массив, который имеет PRODUCTID, название и цена в нем в следующем форматеJQuery возвращения JSON данные сложения двух чисел

[ 
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 }, 
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 } 
] 

, когда я добавьте им эти две цены, которые он не складывает вместе, заражая, они объединяются. это, как я пытаюсь добавить их

$.each(data, function(i, result) { 
    //total = total + +result.price; 
    //total += +result.price; 
    //total += result.price; 
    //total += +total + +result.price; 
    //total = total * 1 + result.price; 
}); 
$("#cart_total").empty(); 
$("#cart_total").append(output); 

Любая идея, что я должен сделать, чтобы получить это право

С уважением

+0

То, что вы хотите, в общей сложности цены? – Sadikhasan

+0

Перед циклом '.each' вы должны инициализировать' total = 0', он отлично работает. – Sadikhasan

ответ

2

попробуйте это ...

var data = [ 
 
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 }, 
 
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 } 
 
]; 
 

 
var sum = 0; 
 
data.forEach(function(i){ 
 
    sum =sum + +i.price; 
 
}); 
 
alert(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

+0

Ошибка NaN @Dhaval – Sharif

+0

это дает 3.6900000000000004 в предупреждении ... – Dhaval

1

Попробуйте это:

total = Number(total) + Number(total.price); 

конкатенация происходит потому что total должен быть строкой, даже если она «содержит» число. Другими словами:

'1' === 1 

Средства false в JavaScript.

То, что мы делаем, принуждая total строку в число:

Number('1') === 1 

(true)

+0

'! ===' уверен в этом. – Jai

+0

Отредактировано, спасибо! – bardzusny

1
var data = [ 
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 }, 
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 } 
]; 

Чтобы добавить

var sum = 0; 
data.forEach(function(i){ 
    sum += +i.price; 
}); 
$("#cart_total").empty(); 
$("#cart_total").append(sum); 
1

Вы должны инициализировать total v до запуска цикла, и вы можете выполнить свою задачу.

total = 0; 
$.each(data, function(i, result) { 
    total = total + result.price; 
}); 
alert(total); 

Demo

1
var data = [ 
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 }, 
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 } 
]; 

Тогда calcultate сумма:

var total = 0; 
$(data).each(function(index,item) { 
    total += item.price; 
}); 
total = parseFloat(total.toFixed(2)) 

Дисплей:

$("#result").html(total); 

Рабочая Exemple здесь: http://jsfiddle.net/9jpdLkp2/

+0

Кстати, как вы видите только две цифры после десятичного числа? если вы могли бы помочь – Sharif

+0

total = parseFloat (total.toFixed (2)), добавленный в моем ответе – RafH

1

Пользователь функция ParseInt:

sum=parseInt(price)+parseInt(price); 
1

инициализации всего, во-первых: общий = 0; затем:

total += parseFloat(result.price); 

попробуйте это!

1

попробовать это

var total = 0; 
$(data).each(function(index,item) { 
    total += item.price; 
}); 
total = parseFloat(total.toFixed(2)); 

toFixed(2) является ограничение две цифры после десятичной

надежде, что помогает