Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX,在返回的数组上执行数学函数,结果为NaN?_Javascript_Ajax - Fatal编程技术网

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

Javascript AJAX,在返回的数组上执行数学函数,结果为NaN?,javascript,ajax,Javascript,Ajax,我正在进行一个ajax调用以更新引导程序进度条,ajax调用成功后,我有以下内容: $(function () { var percent = data['minutes'] / 30 * 100; $('#progressbarr').html("<div class='bar' id='progressbar' style='width: "+ percent +"%;'></div>"); } 尝试先使用以下命令将其强制为数字类型: var pe

我正在进行一个ajax调用以更新引导程序进度条,ajax调用成功后,我有以下内容:

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

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

尝试先使用以下命令将其强制为数字类型:

var percent = parseInt(data['minutes']) / 30 * 100;
您的ajax回调周围有一个
$()
,删除它,一切都应该正常

失败的JSFIDLE(基于您的代码):


使用JSFIDLE(不使用
$()
):

为了安全起见,请使用
parseInt(数据['minutes'))
尝试一下,看看它是否有效。我知道你说了两遍肯定是一个数字,但请幽默我。
数据['minutes']
可能是
未定义的
,这表明此代码在Ajax完成之前运行。也许您是正确的,
data['minutes']
最终会保存一个数值,但在代码运行时它不会。检查console时,POST会返回数值value@JohnDOe出于好奇,为什么成功回调中有
$(function(){})
?您确实意识到这与
$(document.ready(function(){})相同并在页面准备就绪时执行,而不是在ajax调用返回时执行。您的成功回调实际上是在
$(document).ready()上运行的,而不是在ajax事件成功时运行的。删除
$(函数(){
并关闭
}),您应该会没事。
警报(数据类型['minutes');警报(数据[分钟])并最终
parseInt(数据['minutes'])| | 0
。对不起,
data['minutes']
不是你当时认为的那样。在计算之前,请立即输入以下内容:
alert(parseInt(数据['minutes'))
well。。这很奇怪。。。让NaN保持警惕。。。也许你可以帮我找到根目录,然后我从MySQL日期字段中获取一个日期,然后我执行$start\u date->diff($since\u start);要获取从现在到保存日期的间隔,$TTL['minutes']=30-$minutes;然后减去时间,然后使用echo json_encode($TTL)对其进行回显;请编辑您的问题,以便我们可以查看
数据
的设置位置和方式-您提到您正在使用AJAX,您可能试图在设置
数据之前访问它。如果没有
+
,您的小提琴也能正常工作,这表明OP的问题(无论是什么)没有在您的代码中解决。
$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);
var percent = parseInt(data['minutes']) / 30 * 100;