Jump to content
FQueiros

XMLHttpRequest() problema no retorno dos dados.

Recommended Posts

FQueiros

Boa tarde,

O problema é o seguinte, eu tenho o meu servidor em que chamo uma pagina html simples com um botão que por sua vez quando carrego chamo o javascript associado.

Este script tem o objectivo de mandar um request para outra página em outro domínio e receber o seu resultado.

Se eu fizer isto para uma página no meu domínio funciona bem os dados são devolvidos, mas para fazer com o url para outro site que não esteja no meu servidor devolve-me sempre o status = 0.

como é que posso resolver este problema?

É que preciso de comunicar e receber o retorno da outra página fora do meu domínio.

Segue o código da página html simples que tenho para testar:

<script>
var req;

function checkStatus() {
var url = 'https://paginaParaEnviar/IsUserAuthenticated.aspx';

req = new XMLHttpRequest();

if (req != null) {
if ("withCredentials" in req) {
req.open("GET", url, true);
req.setRequestHeader("Content-type", "text/plain");
req.withCredentials = "true";
req.onreadystatechange = function() { process(req) };
req.send(null);

}
else if (typeof XDomainRequest != 'undefined') {
alert('undefined');
req = new XDomainRequest();
req.open("GET", url);
req.onload = function() {
var response = req.responseText;
if (response == "1") {
document.cookie = "CheckAuthentication=1;path=/";
//window.open('Default.aspx','_self');
alert('valor 1.1');
}
else{
document.cookie = "CheckAuthentication=0;path=/";
alert('valor 0.0');
}
};
req.send();
}
}
}

function process(request){
alert('inicio js');
if (request.readyState == 4) {
alert("satatus: "+request.status);
if (request.status == 200) {
var response = request.responseText;
alert("response: "+response);
if (response == "1") {
document.cookie = "CheckAuthentication=1;path=/";
//window.open('Default.aspx','_self');
alert('valor 1');
}
else{
document.cookie = "CheckAuthentication=0;path=/";
alert('valor 0');
}
}
}
}

</script>
<html>
<head>
</head>
<body>

<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="checkStatus(); return false;">user registado</button>

</body>
</html>

Ex:

caso use um url do meu domínio funciona bem, devolve status = 200 e respectiva mensagem

caso use um url para uma página fora do meu domínio devolve sempre o status = 0

Alguma ajuda do que pode ser e como resolver?

Edited by yoda

Share this post


Link to post
Share on other sites
taviroquai

Se não for possível comunicar com o outro domínio por, por exemplo, um webservice (é a forma mais correcta para a comunicação de plataformas/organizações diferentes), e se não for possível controlar a outra aplicação (por exemplo implementar JSONP) então, em vez de javascript, faz a comunicação por intermédio do teu servidor por ajax... por exemplo, em php com cURL...

Share this post


Link to post
Share on other sites
FQueiros

vou ver as dicas que disseste, mas em principio devia dar para comunicar pois a documentação do outro servidor para fazer esta comunicação aconselha este tipo de comunicação.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.