2014-01-21 4 views
0

Я использую следующие функции DOJO для вызова AJAX. Но, к сожалению, респиратор для конкретного запроса кэшируется. И даже если я изменил код на стороне сервлета, его не отразили на случаи, когда я попытался раньше. Я думаю, что ответ кэширован. Я использую сервер Tomcat. Может ли кто-нибудь помочь?Ответ AJAX кэшируется при использовании DOJO

<script type="text/javascript"> 
function showMonth(text) { // 
    dojo.xhrGet({ 
    // The following URL must match that used to test the server. 
    url: "ajaxServlet?s="+text, 
    handleAs: "text", 
    // The LOAD function will be called on a successful response. 
    load: function(response, ioArgs) { // 
        dojo.byId("response").innerHTML = response + "Hereeee"; // 
        return response; // 
       }, 

    // The ERROR function will be called in an error case. 
    error : function(response, ioArgs) { // 
        console.error("HTTP status code: ", ioArgs.xhr.status); // 
        dojo.byId("response").innerHTML = 'Loading the ressource from the server did not work'; // 
        return response; // 
       }, 

       // Here you put the parameters to the server side program 
       // We send two hard-coded parameters 
       content : { 
        name : "lars", 
        url : "testing" 
       } 
      }); 
} 

ответ

2

Существует на самом деле это свойство, которое вы можете использовать, что называется preventCache, который добавит метку времени для каждого запроса (поэтому кэш-память никогда не используется), если вы установите его на true, вы можете прочитать больше о это на reference guide.

В вашем случае это будет:

function showMonth(text) { // 
    dojo.xhrGet({ 
    // The following URL must match that used to test the server. 
    url: "ajaxServlet?s="+text, 
    handleAs: "text", 
    preventCache: true, 
    // The LOAD function will be called on a successful response. 
    load: function(response, ioArgs) { // 
        dojo.byId("response").innerHTML = response + "Hereeee"; // 
        return response; // 
       }, 

    // The ERROR function will be called in an error case. 
    error : function(response, ioArgs) { // 
        console.error("HTTP status code: ", ioArgs.xhr.status); // 
        dojo.byId("response").innerHTML = 'Loading the ressource from the server did not work'; // 
        return response; // 
       }, 

       // Here you put the parameters to the server side program 
       // We send two hard-coded parameters 
       content : { 
        name : "lars", 
        url : "testing" 
       } 
      }); 
} 

Небольшое замечание: Кэширование не додзё конкретно, это потому, что GET запрос должен быть использован для запроса информации, именно поэтому большинство браузеров кэшировать эти запросы для повышения производительности. Все остальные типы запросов (POST, PUT, ...) обычно не кэшируются.

+0

Спасибо Dimitri. Это сработало. И спасибо за дополнительную информацию. – Rob

+0

+1 для объяснения того, как работает 'preventCache' – undefined

0

Я разрешил это. Я использовал функцию "preventCache: true" внутри функции.

Смежные вопросы