从一个选择标记到另一个选择标记的缓存值

时间:2013-07-02 09:25:21

标签: jquery

我遇到了问题,我创建了两个选择框。

从第一个选择值后,它将被传递并在数据库选择中使用,第二个是数据库查询的效果,在从第二个选择值后,将显示将显示详细信息的输入。

问题是在从第一个选择标记中选择值并将其传递给第二个之后,该值正在以某种方式进行缓存,因此在从第二个选择框中选择值后,我获得了相同数量的请求,我在第一个选择框中更改了值。

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);
     }
 });
 }

1 个答案:

答案 0 :(得分:0)

如果您按照建议缓存AJAX请求,可以尝试添加:

$.ajax({
     cache: false,
     ...

这将在日期戳上附加为您的URL的URL参数,以确保浏览器不会获取缓存副本。我多次遇到过这个问题,尤其是在使用IE时。

你也可以这样做:

$.ajaxSetup({cache : false});

这将禁用所有请求的缓存。