Jquery ajax返回显示nan

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

我遇到的问题首先是 我有一个名为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");
    });

});
当页面加载时,定价范围将获得输出的值。但当我选择数量选择时,定价范围会得到一个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函数仍然会引用它。我还需要一些建议。你能帮我吗?我会非常感激的