我正在尝试从w3schools.com学习AJAX。但我无法理解以下例子:
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
在上面的示例中,您可能会获得缓存结果。要避免这种情况,请在URL中添加唯一ID:
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
提前感谢。
答案 0 :(得分:1)
Cached Result
:
request
(网址),浏览器缓存response
(结果) "demo_get.asp?t=" + Math.random()
:
这会更改每次调用的网址,因此,例如,如果demo_get.asp?t=32332
被缓存,则不会影响demo_get.asp?t=43948348
。感谢Math.random()
根据客户端使用的方法,您将能够在服务器端处理请求。
GET方法:
//client side
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
//server side
$_GET
POST方法:
//client side
xhttp.open("POST", "demo_get.asp?t=" + Math.random(), true);
//server side
$_POST
答案 1 :(得分:1)
Web缓存只是意味着该文件保留在浏览器中,从而加快了浏览速度,因为您不需要一遍又一遍地获取相同的文件。
1:通过添加随机字符串或时间戳作为参数,浏览器始终将其视为新文件。
remotefile.js?ts = 123与remotefile remotefile.js不同?ts = 124
2:在php 5.3+中,您可以通过查看特定请求类型的全局变量来获取数据。
$_GET holds all get parameters (ie the part of the URL after ?)
$_POST holds an array of all POST.parameters
file_get_contents('php://input') holds the json in a json-request
使用$ _GET看不到附加GET数据的原因是因为get reuest只处理URL参数。如果您想发送数据,请查看POST。
答案 2 :(得分:0)
问题1 通过缓存的结果,我认为这意味着您的浏览器会临时存储/缓存XMLHttpRequest对象检索到的响应。这意味着,下次尝试获取响应时,除非使用的ID与缓存的响应的ID不同,否则您将获得旧的(缓存的响应)。换句话说,唯一的ID可确保您无论何时请求响应都可以访问要从中检索数据的任何文件。