Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tenho uma função capturar informações de um WebService por Json que funciona em "todos" os navegadores exceto no Ie.
O código já havia apresentado outros problemas que consegui resolver (dps de muita lida no "stackoverflow" e aqui no iMaster), mas dessa vez emperrei.
O Ie me da o retorno:
Mensagem: O objeto não dá suporte para a propriedade ou método
a linha do erro é:
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
e o código é
function SendData(url, dados, AjaxResponseFunction) {
var ajax;
if(window.XDomainRequest)
{
ajax = new XDomainRequest();
}
else if(window.XMLHttpRequest)
{// Mozilla, Safari, Novos browsers...
ajax = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{// IE antigo
ajax = new ActiveXObject("Msxml2.XMLHTTP");
if(!ajax)
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(ajax)
{
ajax.onreadystatechange = function trataResposta() {
if(ajax.readyState === 4) {
AjaxResponseFunction(ajax.status, ajax.responseText);
}
};
//definir o tipo de método
ajax.open("POST", url, true);
//definir o encode do conteúdo
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//enviar os dados
ajax.send(dados);
}
}
Podem me ajudar por favor?
Obrigado, mas isto eu v e não resolve o problema, tentei usar outros meios mas não deu certo, vc apenas informou novamente o problema o.O.
Alguem pode me dizer o que posso fazer para substituir o ajax.setRequestHeader() ?
com qual versão do IE vc esta testando?
Desculpe a demora, Shini, esqueci de falar, obrigado por tentar ajudar. Vamos lá
Estou com Ie8.
Antes eu tinha um erro no ajax.open de "Could support". Ai fiz os ifs
if(window.XDomainRequest) { ajax = new XDomainRequest(); } else if(window.XMLHttpRequest) {// Mozilla, Safari, Novos browsers... ajax = new XMLHttpRequest(); } else if(window.ActiveXObject) {// IE antigo ajax = new ActiveXObject("Msxml2.XMLHTTP"); if(!ajax) { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } }
e com isso funcionou o ajax.open (aparentemente o que fez funcionar foi o
if(window.XDomainRequest) { ajax = new XDomainRequest(); }
A resposta que estou pegando é JSON.
Se eu mudar o
("Content-Type", "application/x-www-form-urlencoded");
para "application/json" ai não funfa em nenhum navegador.
Mas acho que não é isso, aparentemente não reconhece o próprio "setRequestHeader"
usa o ajax do jquery é mais simples.
usa o ajax do jquery é mais simples.
Infelizmente não posso, o magento usa Prototype, importar o jQuery pode dar problema e o material do Prototype é complicado, se alguem tiver um link que ensina a usar isto no Prototype eu agradeço.
Mensagem: O objeto não dá suporte para a propriedade ou método
veja a linha do erro