Por alguma razão, ao usar o AJAX (com o meu dashcodeaplicativo desenvolvido) o navegador apenas para de carregar e retorna os códigos de status de 0
. Por que isso acontece?
ajax
http-status-codes
Tarnfeld
fonte
fonte
<form onsubmit="return false;">
e.preventDefault();
Na minha experiência, você verá um status 0 quando:
fonte
Mesmo problema aqui ao usar
<button onclick="">submit</button>
. Em seguida, resolvido usando<input type="button" onclick="">
fonte
O código de status 0 significa que o URL solicitado não está acessível. Alterando http: // algo / algo para https: // algo / algo funcionou para mim. O IE gera um erro dizendo "permissão negada" quando o código de status é 0, outros navegadores não.
fonte
É importante observar que as chamadas ajax podem falhar mesmo dentro de uma sessão definida por um cookie com um determinado domínio prefixado com www. Quando você chama seu script php, por exemplo, sem o www. prefixo no URL, a chamada falhará e vice-versa também.
fonte
Este artigo me ajudou. Eu estava enviando um formulário via AJAX e esqueci de usá-lo
return false
(após minha solicitação de ajax), o que levou ao envio clássico de formulários, mas estranhamente não foi concluído.fonte
<form onsubmit="return false;">
fez o truque.Como isso aparece quando você google ajax status 0, eu queria deixar uma dica que me levou horas perdidas ... Eu estava usando o ajax para chamar um serviço PHP que por acaso era o REST_Controller do Phil para Codeigniter de Phil (não tenho certeza se isso ocorreu) nada a ver com isso ou não) e continuou recebendo o status 0, readystate 0 e isso estava me deixando louco. Eu estava depurando e notei quando ecoaria e retornaria, em vez de sair da mensagem de que eu teria sucesso. Finalmente, desliguei a depuração e tentei e funcionou. Parece que o depurador xDebug com PHP estava de alguma forma modificando a resposta. Se você estiver usando um depurador PHP, tente desligá-lo para ver se isso ajuda.
fonte
Encontrei outro caso em que jquery fornece o código de status 0 - se, por algum motivo, XMLHttpRequest não estiver definido, você receberá esse erro.
Obviamente, isso normalmente não acontece na Web, mas um bug em uma compilação noturna do Firefox causou esse problema em um complemento que eu estava escrevendo. :)
fonte
jQuery.ajax()
objeto XHR. O pedido não foi mesmo criado na chamada AJAX, ainda recebendo f.open não é uma função e status código 0. Causada por: eu estava voltando$.ajaxSettings.xhr
objeto$.ajaxSetup({xhr})
, retornandonew window.XMLHttpRequest();
em vez resolvido o problemaEu tive o mesmo problema e estava relacionado ao bloco XSS (cross site scripting) pelo navegador. Consegui fazê-lo funcionar usando um servidor.
Dê uma olhada em: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
fonte
O envio "acidental" de formulários era exatamente o problema que eu estava tendo. Acabei de remover as tags FORM completamente e isso parece resolver o problema. Obrigado a todos!
fonte
Tivemos um problema semelhante - código de status 0 na chamada jquery ajax - e levamos um dia inteiro para diagnosticá-lo. Como ninguém havia mencionado esse motivo ainda, pensei em compartilhar.
No nosso caso, o problema foi o travamento do servidor HTTP. Algum bug no PHP estava soprando o Apache, então no lado do cliente ficou assim:
onde test.php continha o código de falha. Nenhum dado retornado do servidor (nem mesmo cabeçalhos) => a chamada ajax foi interrompida com o status 0.
fonte
No meu caso, isso foi causado pela execução do meu servidor django sob o
http://127.0.0.1:8000/
envio da chamada ajax parahttp://localhost:8000/
. Mesmo que você espere que eles mapeiem para o mesmo endereço, eles não garantem que você não esteja enviando suas solicitações para o host local.fonte
No nosso caso, o link da página foi alterado de https para http . Mesmo que os usuários estivessem logados, eles foram impedidos de carregar com o AJAX.
fonte
No meu caso, definir
url: ''
configurações de ajax resultaria em um código de status 0 em ie8 .. Parece que ie simplesmente não tolera essa configuração.fonte
Para mim, o problema foi causado pela empresa de hospedagem Godaddy, que tratava as operações do POST que possuíam dados de resposta substanciais (mais do que dezenas de kilobytes) como algum tipo de ameaça à segurança. Se mais de 6 deles ocorreram em um minuto, o host se recusou a executar o código PHP que respondeu à solicitação POST durante o próximo minuto. Não tenho muita certeza do que o host fez, mas vi, com o tcpdump, um pacote de redefinição do TCP como resposta a uma solicitação POST do navegador. Isso fez com que o código de status http retornado em um objeto jqXHR fosse 0.
Alterar as operações de POST para GET corrigiu o problema. Não está claro por que Godaddy impõe esse limite, mas alterar o código foi mais fácil do que alterar o host.
fonte
Acho que sei o que pode causar esse erro.
No google chrome, há um recurso embutido para impedir ataques de ddos para extensões do google chrome.
Quando solicitações de ajax retornam continuamente mais de 500 erros de status, ele começa a limitar as solicitações.
Portanto, é possível receber o status 0 nas seguintes solicitações.
fonte
Na tentativa de ganhar o prêmio pela razão mais idiota do problema descrito.
Esquecendo de ligar
Sim, eu ainda estava recebendo retornos de status zero na chamada 'aberta'.
fonte
No meu caso, eu estava conseguindo isso, mas apenas no Safari Mobile. O problema é que eu estava usando o URL completo ( http://example.com/whatever.php ) em vez do relativo (qualquer que seja.php). No entanto, isso não faz sentido, não pode ser um problema de XSS porque meu site está hospedado em http://example.com . Eu acho que o Safari analisa a parte http e a sinaliza automaticamente como uma solicitação insegura sem inspecionar o restante da URL.
fonte
Na minha solução de problemas, achei que este AJAX xmlhttpRequest.status == 0 poderia significar que a chamada do cliente ainda não havia chegado ao servidor, mas falhou devido a um problema no lado do cliente. Se a resposta foi do servidor, o status deve ser o código de resposta HTTP 1xx / 2xx / 3xx / 4xx / 5xx. A partir de agora, a solução de problemas se concentrará no problema do CLIENTE e poderá ser uma conexão de rede da Internet inativa ou uma das descritas por @Langdon acima.
fonte
Observe o console do navegador enquanto faz a solicitação, se você estiver vendo "A mesma política de origem não permite a leitura do recurso remoto em http ajax ..... motivo: cabeçalho cors 'acesso-controle-permitir-origem' ausente", então você precisa adicione "Access-Control-Allow-Origin" no cabeçalho da resposta. exa: em java, você pode definir isso como response.setHeader ("Access-Control-Allow-Origin", "*") em que response é HttpServletResponse.
fonte