如何在 XMLHTTPRequest 之后在 HTML 页面上显示响应?
How to display response on HTML page after an XMLHTTPRequest?
我正在制作自己的项目。我正在发送一个 AJAX 请求,该请求将返回一个响应。我想解析响应并在 table 中显示数据。像这样:
<head>
<script>
var message = null;
function ajaxCallToServer() {
var xmlhttp = new XMLHttpRequest(); var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response']; // message is a JSON object
};
xmlhttp.send();
}
</script>
</head>
...
<body>
<% if ( message) { %>
<!--loop through message object to display message on the page-->
<div class="table">
<% for(key in message) { %>
<% if(message.hasOwnProperty(key)) { %>
<div class="tr">
<div class="td key"><b><%= key %></b></div>
<div class="td value"><%= message[key] %></div>
</div>
<% } %>
<% } %>
</div>
<% } %>
</body>
我正在分配变量消息(console.log 显示的数据正确),然后在页面后面使用 ejs 打印它。 ejs 不打印“消息”,我怀疑它与需要重新加载页面有关。求助!
你说得对,'message'调用的时候是null
这里有一个关于如何动态更改 DOM 元素的 de html 的简单示例。
HTML:
<p id="test">
</p>
JS (ES6):
const test = document.getElementById('test');
test.innerHTML = "Tested";
Fiddle: https://jsfiddle.net/
使用您的代码快速修复:
<head>
<script>
var message = null;
function ajaxCallToServer() {
var responseText = document.getElementById('response');
var xmlhttp = new XMLHttpRequest(); var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response'];
responseText.innerHTML = message;
};
xmlhttp.send();
}
</script>
</head>
...
<body>
<p id="response"></p>
</body>
您的页面无法重新加载并且仍然设置了变量 message
,除非您 post 将其添加到您的网站。
EJS 只在加载时呈现,所以也许你应该看看 AngularJS 或者简单地使用 document.querySelector("body").innerHtml = message;
将消息放入你的正文中。
这是一个工作示例:
var message;
function ajaxCallToServer() {
var xmlhttp = new XMLHttpRequest();
var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response'];
document.querySelector("body").innerHtml = message;
};
xmlhttp.send();
}
<body>
</body>
我正在制作自己的项目。我正在发送一个 AJAX 请求,该请求将返回一个响应。我想解析响应并在 table 中显示数据。像这样:
<head>
<script>
var message = null;
function ajaxCallToServer() {
var xmlhttp = new XMLHttpRequest(); var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response']; // message is a JSON object
};
xmlhttp.send();
}
</script>
</head>
...
<body>
<% if ( message) { %>
<!--loop through message object to display message on the page-->
<div class="table">
<% for(key in message) { %>
<% if(message.hasOwnProperty(key)) { %>
<div class="tr">
<div class="td key"><b><%= key %></b></div>
<div class="td value"><%= message[key] %></div>
</div>
<% } %>
<% } %>
</div>
<% } %>
</body>
我正在分配变量消息(console.log 显示的数据正确),然后在页面后面使用 ejs 打印它。 ejs 不打印“消息”,我怀疑它与需要重新加载页面有关。求助!
你说得对,'message'调用的时候是null
这里有一个关于如何动态更改 DOM 元素的 de html 的简单示例。
HTML:
<p id="test">
</p>
JS (ES6):
const test = document.getElementById('test');
test.innerHTML = "Tested";
Fiddle: https://jsfiddle.net/
使用您的代码快速修复:
<head>
<script>
var message = null;
function ajaxCallToServer() {
var responseText = document.getElementById('response');
var xmlhttp = new XMLHttpRequest(); var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response'];
responseText.innerHTML = message;
};
xmlhttp.send();
}
</script>
</head>
...
<body>
<p id="response"></p>
</body>
您的页面无法重新加载并且仍然设置了变量 message
,除非您 post 将其添加到您的网站。
EJS 只在加载时呈现,所以也许你应该看看 AngularJS 或者简单地使用 document.querySelector("body").innerHtml = message;
将消息放入你的正文中。
这是一个工作示例:
var message;
function ajaxCallToServer() {
var xmlhttp = new XMLHttpRequest();
var url = "something"
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onload = (res) => {
console.log(res['target']['response']);
message = res['target']['response'];
document.querySelector("body").innerHtml = message;
};
xmlhttp.send();
}
<body>
</body>