由于我将项目加载到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”时,它会正确显示。
答案 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()