刷新后JavaScript未定义的变量

时间:2018-05-25 20:16:18

标签: javascript jquery

由于我将项目加载到Web服务器,因此在第一次刷新后收到此错误消息:

  

TypeError:oModel.responseJSON未定义

虽然变量存在且AJAX成功。错误是指这一行:

<body onload="displayEntries(oModel.responseJSON.results);">

我在body关闭标记之前加载以下JS:

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="js/user.js"></script>

JS以严格模式运行,在“user.js”中我有这段代码:

    let oModel = $.ajax({
        url: 'data.php',
        dataType: 'json'
    }); 
function displayEntries(entries) {
    $("#div").empty();
    let html = "";

    jQuery.each(entries, function(i, entry) {
        html = '<div id="cid-' + i + '" class="entry">' + entry.name + '</div>';
        $("#div").append(txt);
    });
}

当我在控制台中输入“oModel.responseJSON.results”时,它会正确显示。

2 个答案:

答案 0 :(得分:2)

Ajax是异步的

摆脱onload="displayEntries并在$.ajax的成功回调中调用该函数

$.ajax({
    url: 'data.php',
    dataType: 'json'
}).then(displayEntries); 

答案 1 :(得分:1)

这是因为您在AJAX调用结束之前尝试访问变量的值。

在AJAX调用结束后调用<c:url value="/addmember" var="memberAction"/> <form:form action="${memberAction}" method="post" commandName="member"> 函数,如下所示:

displayEntries()