我遇到了问题,我创建了两个选择框。
从第一个选择值后,它将被传递并在数据库选择中使用,第二个是数据库查询的效果,在从第二个选择值后,将显示将显示详细信息的输入。
问题是在从第一个选择标记中选择值并将其传递给第二个之后,该值正在以某种方式进行缓存,因此在从第二个选择框中选择值后,我获得了相同数量的请求,我在第一个选择框中更改了值。
jQuery看起来像:
首先选择框
function select_contract(folder_id, counter)
{
var dataString = 'folder_id='+folder_id+'&counter='+counter;
$.ajax({
type: "GET",
url: $("#url_autosearch").attr('value'),
data: dataString,
datatype: "json",
success: function(event){
var option = $.parseJSON(event);
$("#autocomplete-select-contract-"+counter).show();
$("#autocomplete-select-contract-"+counter).html(option.contract_list);
$("#autocomplete-select-contract-"+counter).change(function(){
var contract_id = $("#invoice-contract-select-"+counter).val();
select_service(contract_id, counter);
});
}
});
}
第二个选择框:
function select_service(contract_id, counter)
{
var dataString = 'contract_id='+contract_id+'&counter='+counter;
$.ajax({
type: "GET",
url: $("#url_autosearch").attr('value'),
data: dataString,
datatype: "json",
success: function(event){
var option = $.parseJSON(event);
$("#autocomplete-select-service-"+counter).show();
$("#autocomplete-select-service-"+counter).html(option.service_list);
$("#autocomplete-select-service-"+counter).change(function(){
var service_id = $("#invoice-service-select-"+counter).val();
add_currency_value(contract_id, service_id, counter);
return false;
});
}
});
}
和详细信息
function add_currency_value(contract_id, service_id, counter)
{
var selected = $("#invoice-service-select-"+counter).find('option:selected');
var cost_id = selected.data('cost');
var dataString = 'contract_id='+contract_id+'&service_id='+service_id+'&counter='+counter+'&cost='+cost_id;
$("#cost-id-"+counter).val(cost_id);
$.ajax({
type: "GET",
url: $("#url_autosearch").attr('value'),
data: dataString,
datatype: "json",
success: function(event){
var option = $.parseJSON(event);
$("#autocomplete-currency-value-"+counter).show();
$("#autocomplete-currency-value-"+counter).html(option.currency_label);
}
});
}
答案 0 :(得分:0)
如果您按照建议缓存AJAX请求,可以尝试添加:
$.ajax({
cache: false,
...
这将在日期戳上附加为您的URL的URL参数,以确保浏览器不会获取缓存副本。我多次遇到过这个问题,尤其是在使用IE时。
你也可以这样做:
$.ajaxSetup({cache : false});
这将禁用所有请求的缓存。