ajax回归显示南

时间:2010-12-23 03:04:03

标签: 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 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");
    });

});

当页面加载定价范围时获取输出的值。但是当我选择数量选择时,定价范围会得到一个纳米值。谁能明白为什么?

3 个答案:

答案 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等。如果您错过了此参数,如果字符串以00x开头,则parseInt可以返回意外结果。 link

答案 2 :(得分:-2)

我认为问题是由这部分引起的:total = parseInt(price) + parseInt(data.price);

ajax回调函数中未定义“price”。您需要定义它并为其赋值。