如何改进jQuery代码?
我对使用jQuery比较陌生。我编写了以下代码,该代码与一个表单一起工作,该表单填充了一年的三个框、一辆车的品牌和型号。年份是用php编码的,当用户单击年份框时已经列出。make和model从mysql数据库中调用,以填充列表供其选择 但是到目前为止,对make和model的查询在填充列表之前有一点滞后。这里有什么可以改进代码的地方吗?提前感谢您的帮助如何改进jQuery代码?,jquery,mysql,Jquery,Mysql,我对使用jQuery比较陌生。我编写了以下代码,该代码与一个表单一起工作,该表单填充了一年的三个框、一辆车的品牌和型号。年份是用php编码的,当用户单击年份框时已经列出。make和model从mysql数据库中调用,以填充列表供其选择 但是到目前为止,对make和model的查询在填充列表之前有一点滞后。这里有什么可以改进代码的地方吗?提前感谢您的帮助 $(function(){ $('#year').change(function getmakes(){ var vehyear = $
$(function(){
$('#year').change(function getmakes(){
var vehyear = $("#year").val();
$("#model").html('<option value="">-- All Models --</option>');
$.ajax({
url: "/widgets/makes.php",
global: false,
type: "POST",
async: false,
dataType: "html",
data: "year="+vehyear, //the name of the $_POST variable and its value
success: function (response) //'response' is the output provided
{
//counts the number of dynamically generated options
var dynamic_options = $("*").index( $('.dynamic')[0] );
//removes previously dynamically generated options if they exists (not equal to 0)
if (dynamic_options != (-1)) $(".dynamic").remove();
$("#make").html(response);
$(".first").attr({selected: ' selected'});
}
});
return false
});
$('#make').change(function getmodels(){
var vehyear = $("#year").val();
var vehmake = $("#make").val();
$.ajax({
url: "/widgets/models.php",
global: false,
type: "POST",
async: false,
dataType: "html",
data: "year="+ vehyear+"&make="+vehmake, //the name of the $_POST variable and its value
success: function (response) //'response' is the output provided
{
//counts the number of dynamically generated options
var dynamic_options = $("*").index( $('.dynamic')[0] );
//removes previously dynamically generated options if they exists (not equal to 0)
if (dynamic_options != (-1)) $(".dynamic").remove();
$("#model").html(response);
$(".first").attr({selected: ' selected'});
}
});
return false
});
})我会考虑删除AsiNC:FALSE,这样你就不会锁定浏览器。除此之外,任何延迟都可能发生在服务器上,而不是这里,因此您可以在服务器的内存中缓存数据,而不是每次调用DB,或者如果完整的数据集足够小,则将页面上的所有内容转储到javascript对象中,然后你可以从那里拉,而不是每次点击服务器。我认为每次都必须从服务器调用它。每次用户更改年份时,它都必须根据当年生产的汽车品牌重新填充品牌。您可能对这一集是正确的-如果它更小,每次都将整个集发送到页面可能是值得的,但每年,品牌和车型可能都会有点大,甚至是gzipped。但它肯定会足够小,您应该能够将其缓存在web服务器的内存中。这至少会清除一些数据库流量,并跳过每个web请求的一个跃点。不幸的是,我的托管提供商不允许在mysql中进行缓存。