AJAX,在返回的数组上执行数学函数,结果为NaN?

时间:2013-04-26 18:29:13

标签: javascript ajax

我正在进行ajax调用以更新引导进度条,并且在成功进行AJAX调用时我有:

$(function () {
    var percent = data['minutes'] / 30 * 100;

    $('#progressbarr').html("<div class='bar' id='progressbar' style='width: "+ percent +"%;'></div>");
}

现在,我知道数据['minutes']返回一个数字,我在其他地方使用它,来自同一个ajax调用,但是当我做包含该数据数组的数学运算时,我得到的不是数字????

我100%确定数据['minutes']返回一个数值

编辑1

所有JS

setInterval(function(){

     $.ajax({
         type: "POST", // Can be "GET"
         url: "ajax.php",
         data: {
             },
        dataType: "json",
        success: function (data) //on recieve of reply
        {
            $(function () {

                var timeMinutes = data['minutes']; //get comment to post

                var percent = parseInt(data['minutes']) / 30 * 100;


                $('#progressbarr').html("<div class='bar' id='progressbar' style='width: "+ percent +"%;'></div>");
                $('#tid').html(timeMinutes);
            });
        }
    });
}, 3000);

所有PHP

$ip = $_SERVER['REMOTE_ADDR'];

$query = "SELECT * FROM `login_attempts` WHERE ip = '$ip'";

$result = mysqli_query($con, $query);

while ($row = mysqli_fetch_array($result)) {
    $banned = $row['date'];
}

$start_date = new DateTime($today);
$since_start = new DateTime($banned);

$interval = $start_date->diff($since_start);
$minutes = $interval->days * 24 * 60;
$minutes += $interval->h * 60;
$minutes += $interval->i;

$TTL['minutes'] = 30-$minutes;

echo json_encode($TTL);

2 个答案:

答案 0 :(得分:0)

首先尝试使用以下内容将其强制为数字类型:

var percent = parseInt(data['minutes']) / 30 * 100;

答案 1 :(得分:0)

你的ajax回调周围有$(),删除它,一切都应该有效。

失败的jsfiddle(基于你的代码):http://jsfiddle.net/potatosalad/fnjMM/1/

工作jsfiddle(没有$()):http://jsfiddle.net/potatosalad/fnjMM/2/