从AJAX调用

时间:2017-08-01 15:18:41

标签: javascript html json ajax

我有一个AJAX调用,从数据库中获取时间(以分钟为单位)。但是,如果从数据库中获取的值是null,我想替换“null”以显示“0分钟”。现在,如果时间为空,它不会显示任何内容。

$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
$(function() {
    $.getJSON($SCRIPT_ROOT + '/_ajax',
    function(data) {
        $("#timePeriod").text(data.timePeriod);
        if (data.timePeriod == null) {
            data.timePeriod = '0';
        }
    });
});

然后使用以下span标记在HTML中显示:

Average time: <span id="timePeriod"></span> mins

我的AJAX代码中的if语句无法正常工作。它不会显示任何内容(甚至不是null,尽管这是返回的内容)。如何正确替换此值,以便在结果为空时显示“0”?

2 个答案:

答案 0 :(得分:3)

如果我理解正确的问题(尽管我不知道您使用data.wait的原因),它应该像以下一样简单:

data.timePeriod = !isNaN(+data.timePeriod) ? +data.timePeriod : '0';
$("#timePeriod").text(data.timePeriod);

说明:

(逻辑上)您要检查您收到的数据是否有效。它可能是null(肯定),但它也可能包含任何其他奇怪的值。因此,为了100%确定实际可以解析的值,我们首先尝试将其转换为数字(使用一元运算符+),然后我们检查它是否不是NaN:!isNan如果结果实际上是一个数字,评估将返回true。

如果是,则将值分配给data对象,否则分配'0'

第二行只是将值放在span元素中。

答案 1 :(得分:2)

document.getElementById('timePeriod').innerText = +data.timePeriod

使用+转换为数字,+null已为0。

&#13;
&#13;
document.getElementById('timePeriod').innerText = +null
&#13;
Average time: <span id="timePeriod"></span> mins
&#13;
&#13;
&#13;