Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou usando a seguinte função para executar o AJAX -> Select(aPais, aEstado, aQuery, aIDResposta). Na Parte Javascript todos os parâmetros estão sendo passados corretamente como pode ser visto no alert.
Porém na parte da resposta do php, o arquivo ajax.php diz que a variável $_REQUEST['myEstado'] não existe.
Alguém sabe onde está o erro?
Vejam os arquivos de exemplo:
arquivo teste.php:
<script>function AJAX(URL, IDResposta){ oXHR = null; if(window.XMLHttpRequest){ oXHR = new XMLHttpRequest(); }else if(window.ActiveXObject){ var XmlHttp = ['Msxml2.XMLHTTP', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Microsoft.XMLHTTP']; for(var i=0; i<XmlHttp.length; i++){ try{ oXHR = new ActiveXObject(XmlHttp[i]); break; }catch(exception){ oXHR = false; } } }else{ oXHR = false; } if(!oXHR){ document.write("Esse browser não suporta o uso do objeto XmlHttp"); }else{ oXHR.onreadystatechange = function(){ oResponse = document.getElementById(IDResposta); //todos os dados foram recebidos if(oXHR.readyState == 4){ //se status retornado está ok if(oXHR.status == 200){ oResponse.innerHTML = oXHR.responseText; }else{ document.write("Ocorreu um erro ao obter os dados:<br />" + "Nº do erro: <b>" + oXHR.status + "</b><br />" + "Título do erro: <b>" + oXHR.statusText + "</b><br /><br />" + "Mais informações em:<br />" + "<a href='[http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html'>clique](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) aqui</a>"); } } } oXHR.open("GET", URL, true); oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1"); oXHR.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); oXHR.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); oXHR.setRequestHeader("Pragma", "no-cache"); oXHR.send(null); }}</script><script>function Select(aPais, aEstado, aQuery, aIDResposta){ alert('Variável myPais = '+aPais+'\r\nVariável myEstado = '+aEstado+'\r\nVariável myQuery = '+aQuery); AJAX("ajax.php?myPais="+aPais+"&myEstado"+aEstado+"&myQuery="+aQuery, aIDResposta);}</script><select onchange="Select(this.value, 'abc', 1, 'estados');"> <option value="AR">Argentina</option> <option value="BR">Brasil</option> <option value="PY">Paraguay</option></select><div id="estados"> resposta aqui.</div>
arquivo ajax.php:
<?phpheader("Content-Type: text/html; charset=ISO-8859-1", true);if(isset($_REQUEST['myPais'])){ echo " - " .$_REQUEST['myPais']. "<br />";}else{ echo "nada <br />";}if(isset($_REQUEST['myEstado'])){ echo " - " .$_REQUEST['myEstado']. "<br />";}else{ echo "nada <br />";}if(isset($_REQUEST['myQuery'])){ echo " - " .$_REQUEST['myQuery']. "<br />";}else{ echo "nada <br />";}?>
--------
Obrigado!
São atribuidos pelo ajax no ajax.phpmas se myPais e myQuery estão assim:ajax.php?myPais="+aPais+"&myEstado"+aEstado+"&myQuery="+aQueryEntaum é methodo GET eó ajax que atribui ovalor se entende?Sabe as diferencas entre GET e POST?
Tem algo estranho com a variável $_REQUEST['myEstado'], porque o valor das outras variáveis aparecem na tela tanto no alert do javascript quanto no echo do php, enquanto esta variável só aparece no javascript.
js:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img.photobucket.com/albums/v293/mrkalvin/php.jpg&key=2d84e22a3bc9d24435f026cdb615027f5eae6b177f7925673f40585151e077b0" alt="Imagem Postada" />
php:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img.photobucket.com/albums/v293/mrkalvin/js.jpg&key=166bd7615698d169068ee9a03b475ca880b9c0b2e5348f785731d9a02ab71a00" alt="Imagem Postada" />
Então eu alterei o nome da variável na minha query e ficou assim:
Select(aPais, aEst, aQuery, aIDResposta);
ajax.php?myPais="+aPais+"&myQuery="+aQuery+"&myEst="+aEst
Assim funcionou
Pessoal,porque vcs nao utilizam um framework como o xajax por exemplo? utilizo ele sem problemas, muito fácil.Me preocupo somente com minhas funções, deixando a grosso do ajax para o xajax. :)
A variavel estado no ajax naum ta igualando:
function Select(aPais, aEstado, aQuery, aIDResposta){
alert('Variável myPais = '+aPais+'\r\nVariável myEstado = '+aEstado+'\r\nVariável myQuery = '+aQuery);
AJAX("ajax.php?myPais="+aPais+"**&myEstado"+aEstado+"**&myQuery="+aQuery, aIDResposta);
}
deveria ser assim:
function Select(aPais, aEstado, aQuery, aIDResposta){
alert('Variável myPais = '+aPais+'\r\nVariável myEstado = '+aEstado+'\r\nVariável myQuery = '+aQuery);
AJAX("ajax.php?myPais="+aPais+"**&myEstado="+aEstado+"**&myQuery="+aQuery, aIDResposta);
}
mrkalvin irei tornar a falar use GET e naum Request se você trabalhar com formularios em alguns severs "requeste" naum funciona
do mesmo jeito(eu acho que a mairoia dos servers sejam assim),
^^ eu testei o código é legal naum prescisa dos Headers em PHP o proprio ajax impede a gravação no Cache(eu achei q naum funcionace no internetexplorer, mais eu tava enganado)
É cara acho q você esta usando o metodo errado naum seria metodo GET
Ao inves de request
ficaria assim
A proposito naum use "no-cache" do Ajax ele naum funciona no internetexplorer
use no inicio Ajax.php assim:
<?php
// Headers
ficaria assim: