首先要解决的问题 我有一个名为ajax.php的页面,其中包含此url ajax.php?id = 0001返回
{"value":250,"price":"5"}
这是jquery部分
$(document).ready(function() {
//field variables
var quantity = $("#quantity").val();
var price = $("#pricing p.pps span").text();
//onload display default data.
$.get("ajax.php", { id: quantity }, function(data) { $("#pricing p.pps span").html(data.price); }, "json");
//quantity select
$("#quantity").change(
function()
{
$.get("ajax.php", { id: quantity },
function(data)
{
total = parseInt(price) + parseInt(data.price);
$("#pricing p.pps span").html(total);
}, "json");
});
});
当页面加载定价范围时获取输出的值。但是当我选择数量选择时,定价范围会得到一个纳米值。谁能明白为什么?
答案 0 :(得分:2)
在进行任何ajax调用之前评估您的price
变量。紧接在此行之后price
的值是多少:
var price = $("#pricing p.pps span").text();
如果不是数字,则parseInt(price)
来电将返回NaN
你应该在第一个ajax get:
的回调中设置price
var
var price = 0;
$.get("ajax.php", { id: quantity }, function(data) {
$("#pricing p.pps span").html(data.price);
price = data.price;
}, "json");
答案 1 :(得分:0)
代码可能存在两个问题。首先,price
行中的$("#pricing p.pps span").text()
值可能不是数字,因此parseInt(price)
可能会返回NaN
。
第二个来自ajax请求的data.price
可能不是有效数字,所以parseInt(data.price)可能会再次返回NaN
。
解决此问题的嵌套方法是保留类似
的警告语句alert("price: " + price + ", data.price: " + data.price)
行前
total = parseInt(price) + parseInt(data.price);
主要问题是在第一个ajax调用之前设置了price
值,这意味着价格值是一个空字符串,我想。您必须将第一个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);
使用parstInt()
方法时,要记住的另一件事是radix
参数。它是用于解析字符串的数字系统,如hexa,octa等。如果您错过了此参数,如果字符串以0
或0x
开头,则parseInt可以返回意外结果。 link
答案 2 :(得分:-2)
我认为问题是由这部分引起的:total = parseInt(price) + parseInt(data.price);
ajax回调函数中未定义“price”。您需要定义它并为其赋值。