Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 12520|Resposta: 2

[Jquery] [Virar] para jQuery.getJSON problema de cache

[Copiar link]
Publicado em 05/09/2015 10:21:58 | | |
O método getJson do jquery lê a mesma solicitação diretamente do cache após a primeira solicitação ao servidor para obter os dados retornados, e não solicita mais o banco de dados.

Veja como resolver isso:

1 Tornar a URL diferente para cada chamada
Método: Adicionar um número aleatório ao parâmetro.
Exemplo 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Exemplo 2:
"xxx.aspx?randID="+Math.random
Exemplo 3:
"xxx.aspx?randID="+ escape(nova Data())
2 Definir cache para False
Versão sem cache em $.ajax:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alerta (msg);
}
});
3. Inclua a seguinte instrução no topo do arquivo labels.html:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Expira" CONTEÚDO="-1">
4. A função de carregamento pode não só chamar HTML, mas também script, como labels.php, você pode usar a função de cabeçalho no arquivo php:

<?php

cabeçalho("Cache-Control: no-cache, must-revalidate");

?>
5 Use o método de postagem em vez de obtenção.
Ao usar o método de postagem, você precisa prestar atenção a:
Defina o Context-Type do cabeçalho para application/x-www-form-urlencode para garantir que o servidor saiba que há variáveis de parâmetros na entidade. Normalmente usam o SetRequestHeader("Context-Type","application/x-www- form-urlencoded) do objeto XmlHttpRequest; ")。 Exemplo:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
O parâmetro é um par-chave-valor correspondente ao nome/valor, e cada par de valores é separado por um sinal de >. Por exemplo, nome da vara=abc&sex=homem&idade=18, preste atenção na name=update.php?

abc&sex=homem&idade=18 e var name=?abc&sex=homem&idade=18 são escritos incorretamente;
O argumento é enviado no método Send, por exemplo: xmlHttp.send(name); Se for um método get, direto xmlHttp.send(null);

O parâmetro de solicitação do lado do servidor distingue entre Obter e Postar. Se for o método get, então $username = $_GET["nome de usuário"]; Se for um método post, então $username = $_POST["username"];
6 Adicionar cabeçalho ("Cache-Control: no-cache, must-reva lidate") no lado do servidor;
7 Adicionar xmlHttpRequest.setRequestHeader("If-Modified-Since","0") antes que ajax envie a solicitação;
8 Adicionar xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") antes que o ajax envie a solicitação;




Anterior:c# Converter \u64CD\u4F5C\u6210\u529F para chinês "Operação Bem-Sucedida"
Próximo:Validar o plugin jQuery html5Validate baseado em formulários HTML5
 Senhorio| Publicado em 05/09/2015 10:23:09 |
url?username=test&aaa= Math.random()
 Senhorio| Publicado em 05/09/2015 10:24:24 |
Método $.getJson Quando a mesma página é solicitada repetidamente, apenas os dados são carregados do cache, e a URL precisa ser seguida por parâmetros dinâmicos toda vez que for recarregada
$.getJson('a.ashx?t='+nova Data() ,'{a:b}',divertido.... )
Alterar parâmetros na lista de parâmetros é inválido.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = novo Data().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Isso está relacionado ao mecanismo de cache do navegador, e você também pode configurar a página para não ser cache, para que esse parâmetro não seja usado.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' título='Não consegue ver claramente? Troque um! ' largura='50' altura='22'/>
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com