instancia o HTTPXmlRequest

22 views
Skip to first unread message

Pablo Leal

unread,
Feb 6, 2009, 5:41:08 AM2/6/09
to PHP MG
Estou com um problema com na comunicação do objeto XMLHttpRequest no
meu servidor LOCAWEB quando uso maquinas ligadas a uma rede via PROXY.

estou usando esse codigo:

// instancia o HTTPXmlRequest
var req = getXMLDocument();
if(req) {
req.onreadystatechange = function() {
// estado ESPERANDO
if(req.readyState == 1) {
}

// estado PRONTO
if(req.readyState == 4) {
}
}
req.open("POST", "processo_venda.php", true);
req.setRequestHeader("Content-Type", "application/x-www-form-
urlencoded");
var params ="idproduto="+idproduto+"&cor="+cor
+"&iddeposito="+iddeposito+"&quantidade="+quantidade
+"&entradasaida=0";
req.send(params);
}

Nele envio informações para o arquivo processo_venda.php. NO MESMO
SERVIDOR. porem numa rede sem proxy funciona normalmente com proxy ele
não executa.

O que devo mudar para que funcione em ambos?

Diego Henrique Oliveira

unread,
Feb 6, 2009, 5:46:41 AM2/6/09
to ph...@googlegroups.com
Se funciona sem proxy o problema pode ser no proxy. Verifique no servidor proxy se tem alguma restrição quanto a esse tipo de requisição.



 

Diego Henrique
E-mail: diegoho...@yahoo.com.br
Cel: (31) 8415 4732
Website: http://www.diegoholiveira.com






From: Pablo Leal <pabloca...@gmail.com>
To: PHP MG <ph...@googlegroups.com>
Sent: Friday, February 6, 2009 8:41:08 AM
Subject: [PHP MG] instancia o HTTPXmlRequest

Pablo Leal

unread,
Feb 6, 2009, 6:49:45 AM2/6/09
to PHP MG

Se funciona sem proxy o problema pode ser no proxy. Verifique no
servidor proxy se tem alguma restrição quanto a esse tipo de
requisição.



Diego, a questão é essa.

Deveria ser independente do tipo de protocolo. Deviria funcionar de
maneira transparente a proxy.

Diego Henrique Oliveira

unread,
Feb 6, 2009, 7:04:08 AM2/6/09
to ph...@googlegroups.com
Não sei não. vai que seu proxy esta configurado pra bloquear alguma palavra que esteja no meio dessa requisição ou no retorno dessa requisição.

De qualquer forma, tenta mudar o objeto que voce esta usando, ao inves de usar esse objeto getXmlDocument tente usar o objeto xmlHttpRequest

Exemplo tirada do site da W3c School:

var xmlHttp;
try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
}
catch (e) {
    // Internet Explorer
    try {
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
            alert("Your browser does not support AJAX!");
            return false;
        }
    }
}


Abraços


 

Diego Henrique
E-mail: diegoho...@yahoo.com.br
Cel: (31) 8415 4732
Website: http://www.diegoholiveira.com





From: Pablo Leal <pabloca...@gmail.com>
To: PHP MG <ph...@googlegroups.com>
Sent: Friday, February 6, 2009 9:49:45 AM
Subject: [PHP MG] Re: instancia o HTTPXmlRequest

Pablo Leal

unread,
Feb 6, 2009, 7:25:13 AM2/6/09
to PHP MG
Mudei seguindo sua recomendação porem agora não funciona em nenhum,
tenho que mudar algo alem da instancia do objeto. vou ter que mudar
algo aqui:

// var req = getXMLDocument(); aqui nessa função coloquei o exemplo
que vc mandou.

// instancia o HTTPXmlRequest
var req = getXMLDocument();
if(req) {
req.onreadystatechange = function() {
// estado ESPERANDO
if(req.readyState == 1) {
}

// estado PRONTO
if(req.readyState == 4) {
}
}
req.open("POST", "processo_venda.php", true);
req.setRequestHeader("Content-Type", "application/x-www-form-
urlencoded");
var params ="idproduto="+idproduto+"&cor="+cor
+"&iddeposito="+iddeposito+"&quantidade="+quantidade
+"&entradasaida=0";
req.send(params);
}


certamente o erro é no envio da requisição, porque não estou recebendo
nada dela la na pagina de destino só é executada uma sql para update.

fiz o teste aqui, com o proxy e nele não tem restrição nenhuma, e fiz
em uma lanhouse tambem apresentou o mesmo erro.

coloquei os arquivos em um outro servidor de hospedagem e nesse
segundo funciona aparentemente com ou sem o proxy. Dá pra entender?

Pablo Leal

unread,
Feb 6, 2009, 1:35:55 PM2/6/09
to PHP MG
tentei mudar para isso e ainda não deu certo
****************************************************

function EnviarDados()
{
loadXMLDoc("processo_venda.php.php?idproduto="+idproduto+"&cor="+cor
+"&iddeposito="+iddeposito+"&quantidade="+quantidade
+"&entradasaida=0");
}

function loadXMLDoc(url)
{
req = null;
// Procura por um objeto nativo (Mozilla/Safari)
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// Procura por uma versão ActiveX (IE)
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}

function processReqChange()
{
// apenas quando o estado for "completado"
if (req.readyState == 4) {
// apenas se o servidor retornar "OK"
if (req.status == 200) {
document.getElementById('div_retorno').innerHTML =
req.responseText;
} else {
alert("Houve um problema ao obter os dados:\n" +
req.statusText);
}
}
}

*************************************************************************************

usando uma rede com proxy não entra na condição " if (req.readyState
== 4) {"
Reply all
Reply to author
Forward
0 new messages