O JSONP está trabalhando com ópera, Chrome & Safari?
-
19-09-2019 - |
Pergunta
Em um site que estou construindo, quando você faz login (porque o banco de dados está em um outro servidor), eu uso JSON EQUENDO Para verificar se o usuário como as credenciais certas.
Está funcionando perfeitamente (ie7, ie8 e ff), até que eu tentei Chrome, Safari e Opera onde é um desastre completo.
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://someurl.com",
data: aRequestData,
cache: false,
error: function (XMLHttpRequest, textStatus, errorThrown) {
// typically only one of textStatus or errorThrown
// will have info
alert("Error occured textStatus=" + textStatus + " errorThrown=" + errorThrown);
},
success: function(data) {
alert('success');
}
});
Puro e simples e funciona na janela do navegador, no entanto, para minha grande surpresa, não funcionou no Chrome, Safari & Opera, nunca chegou ao alerta de sucesso.
Alguém sabe como resolver esse problema?
Obrigado.
Solução 2
O problema foi deixado sobre o cabeçalho da página HTML, em uma "caixa de espessura" (plug -in JQuery Thickbox), onde foi feita a chamada do Ajax!
Firefox ou IE não se importam com cabeçalhos repetidos nesse caso, mas o mecanismo Webkit faz!
Eu só tive que remover os cabeçalhos extras, e tudo estava de volta aos trilhos.
Obrigado a todos!
Outras dicas
Você já tentou usar as ferramentas de desenvolvedor embutidas para o Safari e o Chrome para verificar se você obtém uma resposta com o código de status HTTP 200 da sua solicitação?
No Chrome, você pode acessar essas ferramentas no menu 'View', escolha a guia 'Recursos' para ver todas as solicitações feitas. Eu acho que você precisará ativar essas ferramentas em alguma configuração ao usar o Safari.
Você também pode tentar criar uma versão sem jQuery para descartar erros cometidos lá, se não receber o status 200 de suas chamadas, acho que o jQuery falhará sem chamar nenhuma função de erro, a documentação para o uso do JSONP com jQuery não é muito concisa em relação Manipulação de erros.
Crie um arquivo HTML com uma versão editada do seguinte conteúdo e carregue -o em seus navegadores:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title />
<script type="text/javascript">
function ws_results(obj) {
alert(obj);
}
</script>
<script type="text/javascript" src="http://someurl.com?foo=bar&callback=ws_results" />
</head>
<body />
</html>