Jeditable получить кэшированные результаты, используя опцию LoadURL - PullRequest
1 голос
/ 15 января 2010

Я использую плагин jQuery jEditable для редактирования какой-то части сайта.

Поскольку в тексте используется текстильный формат, я использую опцию LoadURL для ввода неформатированных данных.

Проблема возникает, когда пользователь редактирует некоторый текст, а затем возвращается, чтобы отредактировать его, вызов ajax возвращает кешированный результат .

Я пытался добавить случайный параметр, но добавляется то же случайное число, поэтому оно бесполезно.

        $(".edit").livequery(function(){$(this).editable("<%=Page.ResolveUrl("~/savetext.aspx") %>", {
             loadurl   : '<%=Page.ResolveUrl("~/gettext.aspx") %>?Rnd=' + Math.random().toString(),
             type      : 'textarea',
             cancel    : 'Cancel',
             submit    : 'Save',
             indicator : 'Saving...',
             rows      : 4,
             tooltip   : 'click to edit'
            });
        });

Есть ли способ указать jEditable добавить случайный параметр в каждом вызове?

1 Ответ

1 голос
/ 20 января 2010

Я тоже это вижу, но только с перерывами. Я понял, что в моем эквиваленте gettext.aspx (в моем случае это PHP-код) я не устанавливал заголовки ответов для предотвращения кэширования в браузере. Я добавил что-то вроде этого, и оно кажется ведет себя лучше:

header("Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );

Я не разработчик asp, но после поиска я думаю, что эквивалент может быть:

HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false); 
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore(); 
...