С кодом может быть две проблемы. Во-первых, значение price
из строки $("#pricing p.pps span").text()
может не быть числом, поэтому parseInt(price)
может возвращать NaN
.
Во-вторых, data.price
, поступающий из запроса ajax, может быть недействительным числом, поэтому снова parseInt (data.price) может вернуть NaN
.
Лучший способ решить эту проблему - сохранить предупреждение типа
alert("price: " + price + ", data.price: " + data.price)
перед строкой
total = parseInt(price) + parseInt(data.price);
Основная проблема в том, что значение price
устанавливается перед первым вызовом ajax, что означает, что значение цены - пустая строка, я думаю. Вы должны обновить первый вызов ajax как
var price = 0;
$.get("ajax.php", {
id: quantity
}, function(data) {
$("#pricing p.pps span").html(data.price);
price = parseInt(data.price)
}, "json");
Тогда вы можете использовать его как
total = price + parseInt(data.price);
Еще одна вещь, которую нужно иметь в виду, это параметр radix
при работе с методом parstInt()
. Это система счисления, используемая для синтаксического анализа строки, такая как hexa, octa и т. Д. Если вы пропустите этот параметр, parseInt может вернуть неожиданные результаты, если строка начинается с 0
или 0x
. ссылка