2016-04-07 2 views
1

AJAX呼び出しを行うたびに、結果がブラウザに期待通りにキャッシュされます。しかし、以前の結果は最新の呼び出しを妨げており、予期せぬ動作がWebアプリケーション内で発生しています。キャッシュに保持されているAJAXデータのリセット

cachefalseと設定しようとしましたが、効果がないようです。最新のコールだけを使用できるようにAJAXデータをリセットするにはどうすればよいですか?

function getProductDetails(selected, obj) { 
    if (obj) 
     obj.abort(); 
    } 

    var url = <url>; 

    //Request 
    obj = $.ajax({ 
     url: url, 
     method: 'post', 
     cache: false, 
     data: { 
      action: action, 
      frontend: frontend, 
      selected: selected 
     } 
    }); 

    obj.done(function(data) { 
     var items = JSON.parse(data); 
     ... 
    }); 
} 

$(document).on('ready', function() { 
    selected = $('.selected').html(); 
    var products = getProductDetails(selected, obj); 

    $('.tabs-nav li').each(function(){ 
     $(this).on('click', function(){ 
      products = getProductDetails(selected, obj); 
     }); 
    }); 
} 
+1

をしたいですかあなたは '.ajax()'関数を使っていますか、 '.get()'を使っていますか? – Joel

+0

@Joelコードがajax呼び出しを示して追加されました。 $ .ajax()を使用します。 – Ryan

+0

POSTでキャッシュされないため、別の問題が発生する – epascarello

答えて

1

私の推測では、Ajaxコードは完璧です。問題は

$('.tabs-nav li').each(function(){ 
    $(this).on('click', function(){ 
     products = getProductDetails(selected, obj); <--- 
    }); 
}); 

あなたがクリックしたものにしますか?また、objを渡すのは意味がありません。

私の推測では、あなたはAJAX呼び出しを作っているどのように私たちを見ることができますか?あなたは

var obj; 
function getProductDetails(selected) { 

    if (obj) 
     obj.abort(); 
    } 

    var url = <url>; 

    //Request 
    obj = $.ajax({ 
     url: url, 
     method: 'post', 
     cache: false, 
     data: { 
      action: action, 
      frontend: frontend, 
      selected: selected 
     } 
    }); 

    obj.done(function(data) { 
     var items = JSON.parse(data); 
     ... 
    }); 
} 

$(document).on('ready', function() { 
    var selected = $('.selected').html(); 
    var products = getProductDetails(selected); 

    $('.tabs-nav li').each(function(){ 
     $(this).on('click', function(){ 
      products = getProductDetails(this.innerHTML); 
     }); 
    }); 
} 
関連する問題