Jquery ajax返回显示nan
我遇到的问题首先是 我有一个名为ajax.php的页面,其url为ajax.php?id=0001,返回Jquery ajax返回显示nan,jquery,ajax,Jquery,Ajax,我遇到的问题首先是 我有一个名为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
{"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");
});
});
当页面加载时,定价范围将获得输出的值。但当我选择数量选择时,定价范围会得到一个nan值。有人知道为什么吗?在进行任何ajax调用之前,都会对价格变量进行评估。这一行之后的价格值是多少:
var price = $("#pricing p.pps span").text();
如果不是数字,则parseIntprice调用将返回NaN
您应该在第一个ajax get的回调中设置价格变量:
var price = 0;
$.get("ajax.php", { id: quantity }, function(data) {
$("#pricing p.pps span").html(data.price);
price = data.price;
}, "json");
我认为问题是由这部分引起的:total=parseIntprice+parseIntdata.price
价格在ajax回调函数中未定义。您需要定义它并给它一个值。代码可能有两个问题。首先,$pricing p.pps span.text行中的价格值可能不是数字,因此parseIntprice可能返回NaN 第二,来自ajax请求的data.price可能不是有效数字,因此parseIntdata.price可能再次返回NaN 解决此问题的最佳方法是保持一个警报语句,如
alert("price: " + price + ", data.price: " + data.price)
排队前
total = parseInt(price) + parseInt(data.price);
主要问题是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方法时,另一件需要记住的事情是参数。它是用于解析字符串(如hexa、octa等)的数字系统。如果错过此参数,则如果字符串以0或0x开头,则parseInt可能返回意外结果 您是否非常确定从ajax.php返回的数据总是正确的?您可以尝试在该.change方法中提醒data.price吗?price已定义,仅在范围外。ajax函数仍然会引用它。我还需要一些建议。你能帮我吗?我会非常感激的