缓存Ajax请求
Caching Ajax Request
使用的语言/软件/技术:PHP, MySQL, WordPress, Javascript, jQuery(最新)。
我在一个页面上有两个select元素—一个用于州,一个用于城市。
在文档中填充state元素。通过Ajax调用从数据库中检索可用状态的函数来准备。city元素是通过对状态元素更改事件的Ajax调用来填充的,这是基于从数据库中选择的州中的可用城市。
我试图学习如何缓存(也许不是正确的术语)的请求,以便可用的城市坚持在一个已经选择的状态被重新选择从它移动后。例如,第一次选择时,我选NC。下一个选择是NY。然后我回到北卡罗来纳;目前ajax调用是在返回NC后再次进行的。我希望将结果存储起来,这样就不会有那么多的查询被抛出。
欢迎任何建议,我还在挖掘!谢谢。
function get_cities(state){
$.ajax({
type:'POST',
data:{action:'generate_city_inputs', state:state},
cache: true,
dataType: 'json',
async:false,
url: "<?php echo site_url().'/wp-admin/admin-ajax.php'; ?>",
success: function(value) {
cityhtml = '';
for (var i = 0; i < value.length; i++) {
cityhtml += "<option value='"";
cityhtml += value[i][0] + "'">";
cityhtml += value[i][0] + "</option>";
}
$("select#search-city").empty().append(cityhtml);
}
});
}
在上面的代码中,状态是两个字母的代码,从state元素更改事件传递到别处。这个ajax调用调用的PHP函数使用state参数处理select语句。
我只需将城邦的响应存储在一个对象中,就像这样:
// Declared at the top of your script, global.
var cachedCities = {};
像这样更改您的get_cities
代码,以便它首先检查缓存。如果为空,则执行ajax调用。成功回调填充缓存。用于填充选择框的代码拆分为populateCities()
。
function get_cities(state){
if (cachedCities[state]) {
var value = cachedCities[state];
populateCities(value);
} else {
$.ajax({
type:'POST',
data:{action:'generate_city_inputs', state:state},
cache: true,
dataType: 'json',
async:false,
url: "<?php echo site_url().'/wp-admin/admin-ajax.php'; ?>",
success: function(value) {
cachedCities[state] = value;
populateCities(value);
}
});
}
}
var populateCities = function(value) {
cityhtml = '';
for (var i = 0; i < value.length; i++) {
cityhtml += "<option value='"";
cityhtml += value[i][0] + "'">";
cityhtml += value[i][0] + "</option>";
}
$("select#search-city").empty().append(cityhtml);
}
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- jQuery Ajax GET请求工作不正常
- "日期“;AJAX请求返回的类型值未定义
- Django - 响应请求 AJAX
- 使用 jQuery 的 CORS 请求 - $.ajax()
- 如果无线电值为 ==1,则请求 ajax
- 如何处理对循环中发出的多个异步请求(AJAX 调用)的响应
- POST请求ajax jquery错误
- CasperJS don'我没有请求AJAX
- 使用这种Facebook风格的Lightbox-请求AJAX-在一个页面上覆盖多个按钮
- 400错误请求ajax post请求
- 如何在开始发送请求ajax之前延迟3秒
- 与jQuery同时请求AJAX
- 使用POST请求AJAX发送json对象