Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E aí pessoal, beleza? Decide começar a fuçar em Ajax (já deteria ter começado faz tempo), mas ok. O problema é que olhei uns tutoriais e não consegui ter sucesso de modo algum. Meus códigos:
ajax.php (página do teste)
<script type="text/javascript">
function display_data(id) {
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null) {
alert ("Your browser does not support AJAX!");
return;
}
var url="get.php";
url=url+"?id="+id;
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
document.getElementById('txtHint').innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
</script>
<?php include "config.php"; ?>
<?php
$sql = mysql_query("SELECT id, kind FROM products");
while ($row = mysql_fetch_array($sql)){
$id = $row['id'];
$kind = $row['kind'];
echo "$id - $kind<br />";
}
?>
<form>
Select category:
<select onchange="display_data(this.value)">
<?php
$sql = mysql_query("SELECT id, kind FROM products");
while ($row = mysql_fetch_array($sql)){
$id = $row['id'];
$kind = $row['kind'];
echo "<option value=\"$id\">$kind</option>";
}
?>
</select>
</form>
<div id="txtHint"> </div>
Até aqui... OK. Todas as consultas são feitas perfeitamente.
get.php
<?php
include "config.php";
if (is_numeric($_GET['id'])) {
$query="select id, kind from products where id=$_GET[id]";
$result=mysql_query($query);
while ($row = mysql_fetch_array($result)){
$id = $row['id'];
$kind = $row['kind'];
echo "$id - $kind<br />";
}}
?>
*TABELA **products*
id
kind
O que pode estar errado?
Não apareceu qualquer erro, a query não funcionou e, quando acesso diretamente, funciona perfeitamente. Não sei, mas parece que meu servidor não aceita Ajax, pois já tentei outros scripts e nada, isso é possível? Poderiam fazer o teste para mim, por favor?
>
Faz o seguinte:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
alert( xmlhttp.responseText );
document.getElementById('txtHint').innerHTML=xmlhttp.responseText;
}
}vê oque aparece no alert(), ou se ele nem chega a ser executado.
E esse alert q coloquei? ele aparece??
essa funcao aqui:
GetXmlHttpObject(); existe? onde você declarou ela ?
>
E esse alert q coloquei? ele aparece??
essa funcao aqui:
GetXmlHttpObject(); existe? onde você declarou ela ?
O alert não aparece. A função está no começo da função... está declarado? Obs.: sou newba em Ajax o.O
>
A função está no começo da função... está declarado? Obs.: sou newba em Ajax o.O
hein?!
Entenda o seguinte, aqui você declara a funcao display_data()
function display_data(id) { e aqui você usa/chama ela:
<select onchange="display_data(this.value)"> ta?AJAX nada eh mais doque Javascript.. você tem duvidas de Javascript..
Oque eu perguntei, foi o seguinte, aqui:
xmlhttp=GetXmlHttpObject(); você usa/chama a funcao GetXmlHttpObject() mas nao estou vendo ela declarada em lugar nenhum.. ou seja:
function GetXmlHttpObject(){ ... :lol:
pegou ? de onde você copiou esse trecho de codigo? você se esqueceu de pegar uma parte.
A que cria o objeto AJAX.
Ah... saquei!
Olha o script (original do site):
<script language="JavaScript" type="text/javascript">
function display_data(id) {
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null) {
alert ("Your browser does not support AJAX!");
return;
}
var url="ajax.php";
url=url+"?employ_id="+id;
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
document.getElementById('employ_data').innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
</script> o.OAinda esta faltando declarar a funcao..
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}Hmm, podes crer... o problema era esse mesmo. Valeu aí pela ajuda brother, você foi bastante atencioso xD
Muitos obrigado, agora vou continuar meus estudos, falou!
Faz o seguinte:
essa query aqui, eu faria:
e acessando diretamente:localhost/get.php?id=2
aparece oque você esperava? ou erros php ?