2012-11-30 47 views
0

我在腳本中調用$.post調用,我想用$.ajaxSetup來處理緩存控制。

function function1() 
$.ajaxSetup({ 
    type: 'POST', 
    headers: { "cache-control": "no-cache", "pragma-cache": "no-cache" } 
}); 
$.post('getLists.php', {user: authUser, token: authToken}, function(data){ 
    $('nav a[class!=btnNewList]').remove(); 
    $.each(data.objects, function(index, element){ 
     $('nav').append('<a href="#" data-list-id="'+element.id+'">'+element.title+'</a>'); 
    }); 
    $('nav').children('a:first-child').next('a').addClass('selected'); 

    getClipsForList($('nav').children('a:first-child').next('a').attr('data-list-id')); 
}, 'json'); 


function function2(){ 
$.ajaxSetup({ 
    type: 'POST', 
    headers: { "cache-control": "public", "pragma-cache": "public" } 
}); 
$.post('getClips.php', {user: authUser, token: authToken}, function(data){ 
    spinner.stop(); 
    $.each(data.objects, function(index, element){ 
     if(element.list == '/api/lists/'+id+'/'){ 
      $('#clips ul').append('<li data-url="'+element.url+'">'+truncate(element.title, 100)+'</li>'); 
     } 
    }); 
},'json'); 
} 

我建立一個移動網絡應用程序,我注意到這是我的緩存JSON響應,所以我做了一些研究,發現$.ajaxSetup解決方案。它工作得很好,但現在看來,無論我設置緩存控制屬性,它現在都是總是緩存。我只想緩存某些$ .post調用。任何方式來做到這一點?

我試過使用$.ajax而不是$.post作爲我希望緩存的數據並將全局屬性設置爲false的函數,但它仍然不會緩存。

+1

爲什麼不直接使用'$ .ajax'來直接指定這些設置? –

+0

感謝凱文,我想避免使用$ .ajax來支持$ .post,因爲它有點清潔,但它似乎是最好的方式,現在正在工作。謝謝! –

+0

我認爲使用$ .ajax比使用$ .ajaxSetup更清潔一次。 –

回答

0

通過簡單地使用每個調用的$ .ajax和每個調用的基礎上的明確設置標題,而不是嘗試使用具有$ .post的全局設置來解決這個問題。