Jump to content


Photo

Xmlhttprequest


  • Faça o login para participar
191 replies to this topic

#31 chisto

chisto

    Stand by

  • Usuários
  • 288 posts
  • Sexo:Não informado
  • Localidade:Joinville - SC - Brasil
  • Interesses:INTERNET

Posted 13/10/2005, 13:08

já resolvido heheh.

function Validar()
{
	nome = document.formulario.nome;
	email = document.formulario.email;
	assunto = document.formulario.assunto;
	mensagem = document.formulario.mensagem;
	
	if (nome.value == "") {
  alert("O nome é um campo obrigatório!");
  nome.focus();
  return;
	}
	if (email.value=="") {
  alert("O e-mail é um campo obrigatório!");
  email.focus();
  return;
	}
	else {
  if (!Validar_Email(email.value)) {
 	 alert("E-mail inválido!");
 	 email.select();
 	 return;
  }
	}
	if (assunto.value=="") {
  alert("O assunto é um campo obrigatório!");
  assunto.focus();
  return;
	}
	if (mensagem.value=="") {
  alert("A mensagem é obrigatória!");
  mensagem.focus();
  return;
	}
	http.open("GET", "fale_conosco_send.php?nome=" + nome.value + "&email=" + email.value + "&assunto=" + assunto.value + "&mensagem=" + mensagem.value, true);
	http.onreadystatechange = handleHttpResponse;
	http.send(null);
}

function handleHttpResponse()
{
	if (http.readyState == 4) {
  document.getElementById("msg").innerHTML = http.responseText;
	}
}

function getHTTPObject() {
	var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
	try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
  try {
 	 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
 	 xmlhttp = false;
  }
	}
@else
	xmlhttp = false;
@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
  try {
 	 xmlhttp = new XMLHttpRequest();
  } catch (e) {
 	 xmlhttp = false;
  }
	}
	return xmlhttp;
}
var http = getHTTPObject();

Acidio Alan
Programador e Marcador
A2C- Internet para negócios
www.a2c.com.br

#32 moura137

moura137

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 09/11/2005, 19:59

Esse tutorial é muito bom, eu consegui finalmente dormi, por que eu queria exatamente isso, atualizar os <select>, atraves do banco dados, por que eu consegui com arquivos txt, js.

Só um detalhe é que se você altere no banco de dados algun registro, muda o nome, ou insere mais um, ou mesmo exclui, os itens não se altera, é preciso fechar o Navegador e abrir a pagina novamente.

Queria saber se é possivel mudar alguma coisa ou tem que ser assim.

valeu galera... com esse codigo da pra ir longe... fazer umas pagina animal..


:)

#33 lcrcosta

lcrcosta

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 24/11/2005, 14:07

Que desculpa o que... Precisamos é deixar viva as dúvidas ;)

Defina a variável como global, como isso?

No inicio do <script lang...> adicione:

var campo_select = document.forms[0].subcategoria;


E dependendo da sua preferência, altere o valor dessa variável.

<a href="java script:campo_select = 'document.forms[5].outro_campo';">Resultado em outro campo?!</a>

Na tentiva de deixar a função flexivel, ou "genérica", tentei fazer o q sugeriu mas não deu certo.
Qdo tento instanciar a variável global, como um objeto, dá erro. (Linha do codigo http.open). Aí mudei e coloquei o 'alvo' como sendo um parametro. Até aí tudo bem, o problema, é que ao atribuir o nome do objeto à variável string, dá outro erro ( Linha do código: campo_select.options[] - dentro do if ).

Pf, me ajudem...

Obrigado


var campo_select
//campo_select = document.forms[0].campo_select;

function pesquisar_dados(obj, alvo){

valor = obj.value;
campo_select = alvo;

http.open("GET", "Zonas_UF.asp?uf=" + valor, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}

function handleHttpResponse() {

campo_select = document.forms[0].campo_select;

if (http.readyState == 4) {
campo_select.options.length = 0;
results = http.responseText.split(",");
for( i = 0; i < results.length; i++ ) {
string = results[i].split( "|" );
campo_select.options[i] = new Option( string[0], string[1] );
}
}
}
Luiz Carlos R Costa
Analista Desenvolvedor
msn: lc_rcosta@yahoo.com.br

#34 thescente

thescente

    Eron Venter

  • Usuários
  • 599 posts
  • Sexo:Não informado
  • Localidade:Novo Hamburgo/RS

Posted 02/12/2005, 10:03

ae galera,

Balala, sem palavras cara, ótimo tutorial, só tenho algumas duvidas...

Eu tentei executar o codigo de consulta na mesma pagina, funciona legal mas ele imprime um monte de coisa no select junto, porque isso?

Não tem como adaptar para que eu use somente uma pagina?

#35 thescente

thescente

    Eron Venter

  • Usuários
  • 599 posts
  • Sexo:Não informado
  • Localidade:Novo Hamburgo/RS

Posted 05/12/2005, 22:36

olha só eu deixei o script javascript num .js separado, eu faço a inclusao dele na minha pagina mas dai sempre diz na mensagem:

campo_select.option é nulo ou não é um objeto


porque acontece isso?

#36 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 06/12/2005, 08:54

Com o script na própria página ele funciona?

Não seria campo_select.options ? Procure a linha do erro..
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#37 thescente

thescente

    Eron Venter

  • Usuários
  • 599 posts
  • Sexo:Não informado
  • Localidade:Novo Hamburgo/RS

Posted 06/12/2005, 12:39

não sei porque mas o problema tava no forms[0] eu digitei troquei pelo nome do form dai funcionou....meio loko isso mas ta tri..... :)

a unica coisa que nao intendi pq ao correrar os dados no segundo combo, sempre vem um registro em branco por ultimo....

#38 gutostraube

gutostraube

    Normal

  • Usuários
  • 71 posts
  • Sexo:Não informado

Posted 09/12/2005, 13:58

Dae pessoal!

Show de bola o tutorial! Muito bom mesmo!

Só tenho um problema aqui, tanto no Firefox quanto no Opera, quando tento abrir uma URL externa, o browser não permite. No Opera dá "Security Violation" e no FF "Access denied". No IE funciona na boa, abri URLs externas e funcionou na boa. Alguém sabe dizer se tem alguma forma dos outros navegadores liberarem o acesso a outros sites através do XMLHTTPRequest? Ou tenho que me conformar com isso? Hehe! :P

Aproveitando o Fórum de JS aqui e pra não abrir outro tópico, gostaria de saber como faço pra acessar os elementos de um form. Assim, preciso criar uma URL do tipo, arquivo.do?var12=valor&var2=valor2, mas sem dar um submit no formulário. Pra isso vou criar uma String com os nomes e valores dos campos hidden do form, separá-los por '&' e carregar usando AJAX. Mas não consigo acessar os hiddens, muito menos seus nomes e valores. Tentei usar:

// Carrega o formulario
var myForm = document.nomeForm;

// Carrega o numero de elementos
var numOfElements = myForm.elements.length;

// Zera o tamanho da lista de elementos
var listSize = 0;

// Cria os vetores com nomes e valores
var namesList = new Array();
var valuesList = new Array();

// Carrega todos os nomes e valores nos vetores
while(listSize < numOfElements) {
    namesList[listSize] = myForm.elements[listSize].name
    valuesList[listSize] = myForm.elements[listSize].value
}

// Instancia o contador e a string com a URL
var counter;
var urlToOpen = 'destino.do?';

// Carrega na string os nomes e valores dos atributos
for (counter = 0;counter <= listSize;counter++) {
    urlToOpen += namesList[counter] + '=' + valuesList[counter];
    if (counter < listSize) {
        urlToOpen += '&';
}

// Código AJAX para carregar a urlToOpen
(...)

Alguém sabe o que está errado?

Obrigado.

Edição feita por: gutostraube, 09/12/2005, 14:00.

Gustavo Straube
Analista de Sistemas

#39 Revenant

Revenant

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 09/12/2005, 16:05

hmm...mto bom sim o tutorial, mas acho que deveria ser abordado de forma mais simples, com um exemplo básico para o pessoal aprender a utilizar o XMLHttpRequest sozinho (lembra? ensine o cara a pescar, nao de o peixe a ele). otra coisa que acho que escapou (nao li todos os posts inteiros, se ja foi dito APAGUE-ME lol), só pra constar, este XMLHttpRequest está sendo chamado por aí de Ajax.

outra curiosidade¹: o google Maps e o GMail sao apenas 2 exemplos do que o google consegue fazer usando o Ajax...

outra curiosidade²: google nao usa asp. google nao usa php. google usa python!

#40 gutostraube

gutostraube

    Normal

  • Usuários
  • 71 posts
  • Sexo:Não informado

Posted 06/01/2006, 14:03

Dae galera,

Comecei a usar Ajax e (putz!) ficou tudo muitoooo mais rápido! :lol:

E descobri que tudo poderia ficar mais fácil usando a prototype, uma biblioteca que facilita, e muito, a vida de quem tá desenvolvendo.

Encontrei até um help para versão 1.3.1, mas baixei a versão 1.5.1 e não encontrei nenhuma referência para usar as funções, com exceção dessa "mãozinha". Queria saber se alguém sabe de algum manual, tutorial, qualquer coisa que explique as funções da 1.5.1. ;)

Valeu!!!
Gustavo Straube
Analista de Sistemas

#41 cfermino

cfermino

    24 Horas

  • Usuários
  • 441 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 06/01/2006, 15:45

Caros,


Neste caso teria como eu jogar os valores para varios campos ao mesmo tempo:

Exemplo.

Tenho os dados do user:

Nome: João
Idade: 15
Cidade: São Paulo
Natural: Bahia

Ai ao selecionar o Nome: João no select ele preencha os campos Idade: 15 Cidade: São Paulo Natural: Bahia

Não sei se fui claro..
Please Help

Abraços

#42 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 09/01/2006, 13:35

eu estou usando o primeiro código que o Blalala postou ( ficou 9.9 :P ), consegui fazer uns testes , tudo normal...

ai fui "tentar" aplicar este script em um dos meus scripts porém ao selecionar o algo no segundo combo ele simplesmente VOLTA pra primeira opção e não seleciona as outras opções nem.... bom já entenderam né ?

então o que poderia estar de errado ?
segue abaixo o código:

function pesquisar_dados( valor ) {
  http.open("GET", "../funcao/funcao.php?Visu=1&id=" + valor, true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}

function handleHttpResponse() {
  campo_select = document.forms[0].usuario;
  if (http.readyState == 4) {
    campo_select.options.length = 0;
    results = http.responseText.split(",");
    for( i = 0; i < results.length; i++ )
    {
      string = results[i].split( "|" );
      campo_select.options[i] = new Option( string[0], string[1] );
    }
  }
}

function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var http = getHTTPObject();


          <select name='setor' size=1 class='Combo' onchange="pesquisar_dados( this.value )">
            <option value='0' style='background-color: #425978;'>+ Setor +</option>
            <?
              $SQl = mysql_query("SELECT DISTINCT setor FROM usuarios WHERE setor >0");
              while ($RRr = mysql_fetch_array($SQl)) {
                $Sql = mysql_query("SELECT * FROM setor ORDER BY setor ASC");
                while ($rRR = mysql_fetch_array($Sql)) {
                  if ($RRr['setor'] == $rRR['id']) {
                  echo "<option value='".$rRR['id']."'>".ucwords($rRR['setor'])."</option>";
                  }
                }
              }
          ?>
            </select><br>
            <select name='usuario' class='Combo' onchange="pesquisar_dados( this.value )">
            <option style='background-color: #425978;'>+ Selecione um usuário +</option>
            </select>

  $SQl = mysql_query("SELECT * FROM usuarios WHERE setor = '".addslashes($_GET["id"])."'");
  while( $RRr = mysql_fetch_assoc($SQl) ) {
    echo ucwords($RRr["nome"]) . "|" . $RRr["setor"] . ",";
  }

O Script teria que funcionar assim , ele iria exibir todos os departamentos, porém só aqueles que os usuários ( estivessem cadastrados ) e após selecionar a categoria exibir somente os USUARIOS que pertencem daquele DEPARTAMENTO

até ai funciona BL, o problema e como disse eu não consigo selecionar outro USUARIO ele insiste em ficar somente no primeiro USUARIO

ah outro probleminha tem como deixar do jeito que esta o SELECT ? só que ao selecionar o primeiro item ( + SETOR + ) ele não exibi-se todos os usuarios no segundo combo ?

T+

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Editando 1

Ah já consegui arrumar era erro grave meu :lol:
o erro está em negrito acima (y) na parte de HTML + PHP

Vlw agora sim ta 10 ;)
pq tbm eu consegui arrumar o meu outro problema, foi so mexer no PHP :rolleyes:

T+

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Editando 2
e tipo como eu resgato com o $_POST o valor do segundo COMBO ? :unsure:
e que eu estou colocando o $_POST['NOME DO COMBO'] e sempre me retorna o valor do PRIMEIRO COMBO :(

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Editando 3
já consegui resolver !!!
ta em VERMELHO o erro ^^' que não e um erro e sim una falha de aprestar atenção de minha parte

o correto era $RRr['id'] pq se não eu estava pegando sempre o ID do setor :P ai repetia hehehe

VLWWW

T+

Edição feita por: Goku Jr, 10/01/2006, 15:11.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#43 Cassiar

Cassiar

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 11/01/2006, 08:49

resolvi mandando um header com content type html e charset iso8859-1.

resolvi o problema do acento colocando:

header("Content-type: text/html; charset=iso-8859-1");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

#44 Boxer

Boxer

    Ativo

  • Usuários
  • 304 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 11/01/2006, 16:48

Oi pessoal!

No meu caso, além da acentuação incorreta, a página, abaixo da combo, é toda desconfigurada! :blink:

Aparecem os valores da combo de subcategoria, por trás de textareas, depois, quando seleciono outra categoria, ele apaga os textareas e imprime na tela as opçãoes da combo, todas com acentuação bizarra! :wacko:

Alguém teve o mesmo problema? Conseguiu resolver? :unsure:

Valeu! (y)
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"

#45 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 12/01/2006, 14:08

Uhh estou quebrando um pouco a cabeça aqui com este script já consegui fazer funcionar porém eu estou querendo fazer o seguinte tbm neste mesmo código

tipo tenho um formulario ( onde alterar e adiciona ) assim o cara entrar neste formulario para aparecer os dados para alteração eu queria q os 2 combos ficassem da mesma forma q foi adicionado , mostrando todos os registros no combo porém deixando o registro q ta pra alterar como PRIMEIRO ( SELECTED )

consegui deixar no primeiro ( facil ) porém no segundo combo onde os resultados e exibidos pelo ( campo_select.options[i] = new Option( string[0], string[1] ); ) não consegui

já fiz todo um esquema aqui, só preciso q deixe o resultado pra editar como SELECTED
tipo coloquei + um | SELECTED na parte de consulta do PHP porém como eu deixo ae neste trexo ele como SELECTED ?

nossa tres vez perguntei a mesma coisa :P

+ deu pra entender né ?

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq