jQuery('select[field]').each(function(){
var jobj = $(this);
var pre_field_name = jobj.attr('filtered_by');
var parent_field_name = jobj.attr('field');
var data_url =jobj.attr('data-url');
var val = jobj.val();
$('select[name='+parent_field_name+']').change(function(){
console.log('change');
if($(this).val()){
console.log('ajax');
$.get(data_url, {'pk': $(this).val()}, function(response){
console.log('response');
var options = '';
for (var i = 0; i < response.length; i++) {
options += '<option value="' + response[i].value + '" '+ (val==response[i].value?'selected="selected"':'') + '>' + response[i].display + '</option>';
}
jobj.html(options);
jobj.change();
})
} else {
jobj.html('<option value="">------</option>');
jobj.change();
}
}).change();
})
如果页面上有3个元素满足此
jQuery('select[field]')
选择器-则在chrome日志中,我会看到6个(我猜是.change()
的两倍)response
日志记录。但是在chrome控制台的network
选项卡和服务器日志中,我看到只有一个请求。可能是什么原因? 最佳答案
这不是隐藏的优化,而是documented行为,用于缓存http响应,
快取
如果设置为false,它将强制请求的页面不被缓存
浏览器。注意:将缓存设置为false只能与
HEAD和GET请求。通过将“ _ = {timestamp}”附加到
GET参数。其他类型的参数不需要该参数
请求,但在IE8中,当对已经存在的URL进行POST时
是GET请求的。
关于javascript - jQuery隐藏的Ajax优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22953513/