gpt4 book ai didi

javascript - 为什么ajax不显示更新后的JSON内容?

转载 作者:行者123 更新时间:2023-12-01 00:00:31 24 4
gpt4 key购买 nike

我是 JavaScript 新手。我想要做的是发送 ajax 请求并获取 JSON 文件的内容,然后将其简单地放入 div 中。这是我的代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<title>Ajax 1 - Text File</title>
</head>
<body>
<button id="button">Get Text File</button>
<br><br>
<div id="text"></div>
<script>
document.getElementById("button").addEventListener('click', loadText);

function loadText(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'users.json', true);

xhr.onload = function(){
if(this.status == 200){

document.getElementById('text').innerHTML = this.responseText;
}
else if (this.status == 404){
document.getElementById('text').innerHTML = 'not found';
}
}
xhr.send();
}

</script>
</body>
</html>

这是 users.json:

[
{
"id":1,
"name":"Rick",
"email":"rick@gmail.com"
},
{
"id":2,
"name":"Negan",
"email":"negan@gmail.com"
}

]

这很好用。但是,当我手动更新 users.json 并更改它并刷新浏览器时,浏览器不会显示更新后的 json。它仍然给我以前的 json 文件。我该如何修复它?

最佳答案

浏览器可能会使用缓存响应进行响应。

尝试附加“时间戳”,以便每次向服务器发出新请求以获取更新的内容。

document.getElementById("button").addEventListener('click', loadText);

function loadText() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'users.json?ts=' + Date.now(), true);

xhr.onload = function() {
if (this.status == 200) {

document.getElementById('text').innerHTML = this.responseText;
} else if (this.status == 404) {
document.getElementById('text').innerHTML = 'not found';
}
}
xhr.send();
}
<button id="button">Get Text File</button>
<br><br>
<div id="text"></div>

由于您已在网页中包含 jQuery,因此我建议使用 jQuery 版本的 ajax。要禁止使用缓存结果,请将 cache 设置为 false

$.ajax({
url: 'myurl',
type: 'GET',
dataType: 'json',
data: jsonDataObject,
cache: false, // Appends _={timestamp} to the request query string
success: function(data) {
// data is a json object.
}
});

关于javascript - 为什么ajax不显示更新后的JSON内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60770332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com