Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pita

Ajax e Formularios

Recommended Posts

Aqui tem tudo que achei de Ajax, incluindo os códigos do SkyWalker e Micox, como estava precisando trabalhar com formulario, adicionei umas coisinhas.

 

Só pra comentar:

A função AjaxLink(id_target,url) é a que todos já conhecem, id_target é o id do objeto onde a página deverá ser carregada e a url é a página que será chamada;

 

A funcao AjaxForm(id_target,id_form) ela recebe o id de onde será carragado e o id do formulario que irá fazer a requisição. Depois o código se encarreda de pega no form o action, method, etc, e tb se encarrega de preparar o Ajax para enviar os dados de acordo com o method utilizado(POST ou GET)

 

A funcao AjaxFunction(id_target,funcao,url) é o que tem de novo agora, ela recebe um id_target, o nome de uma funcao e a url é a página que será chamada. Após receber a requisição do servidor, o código executa a função passando como parametro para a função o id_target e o retorno. Na página que chamou o ajax tem que ter uma função com a seguinte assintura: Nome_da_funcao(id, retorno){...código...}. Atenção: A AjaxFunction não preenche o objeto com o retorno, isso é preciso ser feito na funçao que será executada(se essa for a idéia)

 

O código está totalmente explicado, pelo menos eu acho, acho que não precisa de explicações do que essas,

e vamos ao código :D

 

PS.: Alterei a função que extrai o código script para também fazer o tratamento para quando o codigo script está em um include(src="xxx.js")

PS2: Alterei pq estava dando um pequeno problema quando o div target do form era o div onde estava o form

PS3: Alterei o retorno, retirando o replace, porque estava retirando os caracteres "+" e estava fazendo falta na programação javascript

PS4: Alterei o código para criar a AjaxFunction(). Ainda pode conter algum erro devido ao retorno, mas estou trabalhando em cima disso

 

//INICIALIZA AS VARIAVEIS PARA CONTROLE DA FILAvar ifila = 0var fila = new Array();//fila[X][0] - Div onde sera carregada a pagina.//fila[X][1] - Pagina que sera chamada//fila[X][2] - Metodo de envio//fila[X][3] - Campos do form concatenados no padrao para serem enviados. Null caso seja um link//fila[X][4] - Funcao que sera executada ao termino do processo. Null caso seja um ajaxLink/ajaxForm//INICIALIZA O OBJETO QUE IRA FAZER AS SOLICITACOEStry{	xmlhttp = new XMLHttpRequest();// Mozilla, Safari, Firefox, etc...	try {		if (xmlhttp.overrideMimeType) {			//Se possível, ignora cabecalho usado pelo servidor e forca o padrao "text/xml". Alguns navegadores exigem esse padrao e pode dar erro se o servidor nao utilizar ele			xmlhttp.overrideMimeType('text/xml');		}	} catch (e1) { }}catch(e2){	try{		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer	}catch(e3){		try{			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// Internet Explorer		}catch(e4){			//tratamento para alguma outra forma de implementar XMLHTTP			xmlhttp = false;		}	}}if (!xmlhttp){	//Nao conseguiu instanciar o objeto xmlhttp para fazer as solicitacoes	alert("AJAX error. Your browser must support XMLHttpRequest object or enable use of scripting.");}//GUARDA NA FILA O ID DO OBJETO E A URL QUE SERAO CARREGADOS PELO LINK CLICADOfunction AjaxLink(id_target,url){	//Exibe mensagem de que esta carregando a pagina no objeto de ID informado	ajaxMensagemCarregando(id_target);	//Adiciona a solicitacao na fila	fila[fila.length]=[id_target,url,"GET",null,null];	//Se nao tem conexoes na fila, inicia a execucao	if(fila.length==1){		ajaxRun();	}	return;}//GUARDA NA FILA O ID DO OBJETO E O FORM QUE SERAO CARREGADOS PELO LINK CLICADOfunction AjaxForm(id_target,id_form){	//Pega a pagina que sera chamada pelo form	var url = document.getElementById(id_form).action;	//Busca metodo de envio definido no form	var metodoEnvio = document.getElementById(id_form).method.toUpperCase();	//Busca os elementos do form que serao enviados para a pagina solicitada	var elementos_form = BuscaElementosForm(id_form);	//Exibe mensagem de que esta carregando a pagina no objeto de ID informado	ajaxMensagemCarregando(id_target);	//Adiciona a solicitacao na fila	fila[fila.length]=[id_target,url,metodoEnvio,elementos_form,null];	//Se nao tem conexoes na fila, inicia a execucao	if(fila.length==1){		ajaxRun();	}	return;}function AjaxFunction(id_target,funcao,url){	//Adiciona a solicitacao na fila	fila[fila.length]=[id_target,url,"GET",null,funcao.replace('()',"")];	//Se nao tem conexoes na fila, inicia a execucao	if(fila.length==1){		ajaxRun();	}	return;}//EXECUTA A PROXIMA SOLICITACAO DA FILAfunction ajaxRun(){	var url = fila[ifila][1];	//Define o metodo de envio (GET ou POST)	var metodoEnvio;	if (fila[ifila][3]==null){		//Se for Link/Funcao, utiliza GET		metodoEnvio = "GET";	}else{		//Se for Form, define o metodo de envio e prepara a url		metodoEnvio = fila[ifila][2];		if (metodoEnvio=="" || metodoEnvio==null){			//Se nao tiver definido nada, usa POST			metodoEnvio = "POST";		}		if (metodoEnvio=="GET"){			//Metodo GET passa as informacoes na linha da url			url = url + "?" + fila[ifila][3];		}	}	//Abre a conexao	xmlhttp.open(metodoEnvio,url,true);	//Seta as funcoes que irao tratar a mudanca de estado do objeto XMLHTTP	xmlhttp.onreadystatechange=ajaxXMLHTTP_StateChange;	//Executa a solicitacao	if (metodoEnvio=="POST"){		//Metodo POST precisa definir este RequestHeader		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		//Metodo POST passa as variaveis pelo metodo Send		xmlhttp.send(fila[ifila][3]);	}else{		xmlhttp.send(null);	}	return;}//FUNCAO EXECUTADA QUANDO ALTERAR O STATUS DA SOLICITACAO (readyState)function ajaxXMLHTTP_StateChange() {	//0-Nao inicializado, 1-Carregando, 2-Carregado, 3-Interativo, 4-Completo	if (xmlhttp.readyState==1){		ajaxXMLHTTP_StateChange_Carregando(fila[ifila][0], fila[ifila][4]);//Quando iniciar a solicitacao	}else{		if (xmlhttp.readyState==4){			ajaxXMLHTTP_StateChange_Completo(xmlhttp, fila[ifila][0], fila[ifila][4]);//Quando estiver completa a solicitacao		}	}}//FUNCAO EXECUTADA QUANDO INICIAR A SOLICITACAO (readyState=1)function ajaxXMLHTTP_StateChange_Carregando(id, funcao){   	if(funcao==null){		//Exibe mensagem de que está carregando a página no objeto de ID que solicitacao esta sendo feita		ajaxMensagemCarregando(id);	}	return;}//FUNCAO EXECUTADA QUANDO A SOLICITACAO ESTIVER COMPLETA (readyState=4)function ajaxXMLHTTP_StateChange_Completo(xmlhttp, id_retorno, funcao){	var retorno;	//Verifica o status da pagina de retorno	if (xmlhttp.status == 200 || xmlhttp.status==0) {		//Caso o status seja 200(Sucesso) ou nao utilize servidor(chamada local [C:\...]), trata o valor retornado		retorno=xmlhttp.responseText;//		retorno=retorno.replace(/\+/g," ");		retorno=unescape(retorno);	}else{		//Caso o status ainda nao foi tratado, chama a funcao de tratamento de pagina de erro		retorno=ajaxPaginaErro(xmlhttp);	}	if(funcao==null){		//Exibe o valor retornado no objeto de ID informado		document.getElementById(id_retorno).innerHTML=retorno;	}else{		//Se definiu uma funcao, executa esta funcao		eval(funcao+"('"+id_retorno+"','"+retorno+"');");	}	// executa scripts	ExtraiScript(retorno);	//passa para a proxima posicao da fila	ifila++;	if(ifila<fila.length){		//Caso tenha mais solicitacoes na fila, executa a proxima		setTimeout("ajaxRun()",20);	}else{		//Caso nao tenha mais solicitacoes na fila, reinicia a fila		fila = null;		fila = new Array();		ifila = 0;	}	return;}//FUNCAO PARA RETORNAR A MENSAGEM DE ERRO QUANDO O SERVIDOR RETORNAR UMA PAGINA DE ERROfunction ajaxPaginaErro(xmlhttp){	var retorno;	switch (xmlhttp.status) {		case 404:			return "Página não encontrada!!!";			break;		case 500:			return "Erro interno do servidor!!!";			break;		default:			return "Erro desconhecido!!!<br>" + xmlhttp.status + " - " + xmlhttp.statusText.replace(/\+/g," ");	}}//FUNCAO PARA RETORNAR A MENSAGEM DE QUE ESTA CARREGANDO A PAGINAfunction ajaxMensagemCarregando(id){	//document.getElementById(id).innerHTML = "Aguarde, carregando...";}//FUNCAO PARA PEGAR OS CODIGOS SCRIPTfunction ExtraiScript(texto){	var ini, pos_src, fim, codigo, texto_pesquisa;	var objScript = null;	//Joga na variavel de pesquisa o texto todo em minusculo para na hora da pesquisa nao ter problema com case-sensitive	texto_pesquisa = texto.toLowerCase()	// Busca a primeira tag <script	ini = texto_pesquisa.indexOf('<script', 0)	// Executa o loop enquanto achar um <script	while (ini!=-1){		//Inicia o objeto script		var objScript = document.createElement("script");		//Busca se tem algum src a partir do inicio do script		pos_src = texto_pesquisa.indexOf(' src', ini)		// Define o inicio para depois do fechamento dessa tag		ini = texto_pesquisa.indexOf('>', ini) + 1;		//Verifica se este e um bloco de script ou include para um arquivo de scripts		if (pos_src < ini && pos_src >=0){//Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script			//Marca como sendo o inicio do nome do arquivo para depois do src			ini = pos_src + 4;			//Procura pelo ponto do nome da extencao do arquivo e marca para depois dele			fim = texto_pesquisa.indexOf('.', ini)+4;			//Pega o nome do arquivo			codigo = texto.substring(ini,fim);			//Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano			codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");			// Adiciona o arquivo de script ao objeto que sera adicionado ao documento			objScript.src = codigo;		}else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script			// Procura o final do script			fim = texto_pesquisa.indexOf('</script>', ini);			// Extrai apenas o script			codigo = texto.substring(ini,fim);			// Adiciona o bloco de script ao objeto que sera adicionado ao documento			objScript.text = codigo;		}		//Adiciona o script ao documento		document.body.appendChild(objScript);		// Procura a proxima tag de <script		ini = texto.indexOf('<script', fim);		//Limpa o objeto de script		objScript = null;	}}//FUNCAO PARA PEGAR OS ELEMENTOS DO FORMfunction BuscaElementosForm(idForm) {	var elementosFormulario = document.getElementById(idForm).elements;	var qtdElementos = elementosFormulario.length;	var queryString = "";	var elemento;	//Cria uma funcao interna para concatenar os elementos do form	this.ConcatenaElemento = function(nome,valor) {								if (queryString.length>0) {									queryString += "&";								}								//queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);								queryString += encodeURI(nome) + "=" + encodeURI(valor).replace("&", "%26");							 };	//Loop para percorrer todos os elementos	for (var i=0; i<qtdElementos; i++) {		//Pega o elemento		elemento = elementosFormulario[i];		if (!elemento.disabled) {			//Trabalha com o elemento caso ele nao esteja desabilitado			switch(elemento.type) {				//Realiza a acao dependendo do tipo de elemento				case 'text': case 'password': case 'hidden': case 'textarea':					this.ConcatenaElemento(elemento.name,elemento.value);					break;				case 'select-one':					if (elemento.selectedIndex>=0) {						this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);					}					break;				case 'select-multiple':					for (var j=0; j<elemento.options.length; j++) {						if (elemento.options[j].selected) {							this.ConcatenaElemento(elemento.name,elemento.options[j].value);						}					}					break;				case 'checkbox': case 'radio':					if (elemento.checked) {						this.ConcatenaElemento(elemento.name,elemento.value);					}					break;			}		}	}	return queryString;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigí meu código para não ter problemas de case-sensitive nas tags javascript.Na hora que fazia a pesquisa pela tag "<script", se estivesse "<script" a função não o encontrava, mas agora já está corrigido, já resolveu tb o problema que ocorreria com "</script>" e tb com o "src" quando referenciava arquivos .js

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pita,Estou com problema quando uso o ajaxForm(id_target,id_form)As informações digitadas em meus campos text e textarea, quando chega no meu action ele vem com os acentos truncados...Estou usando JSP e meu jsp está com o cabeçalho.<%@ page contentType="text/html; charset=ISO-8859-1"%> Já o ajaxLink(id_target,url) funciona perfeitamente com acentuação.[]'sDaniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox,Não funcionou acredita... mencionei no texto enviadoEstou usando:<%@ page contentType="text/html; charset=ISO-8859-1"%> O que fazer?[]'sDaniel

Pita,Estou com problema quando uso o ajaxForm(id_target,id_form)As informações digitadas em meus campos text e textarea, quando chega no meu action ele vem com os acentos truncados...Estou usando JSP e meu jsp está com o cabeçalho.<%@ page contentType="text/html; charset=ISO-8859-1"%> Já o ajaxLink(id_target,url) funciona perfeitamente com acentuação.[]'sDaniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi a sua funçao mas naum estou conseguindo usar... ah estou usando php pra ser bem exato eu naum estou conseguindo chamar ela..eu sou novo nesse negocio eu entendo as logicas os metodos mas tenho dificuldade na hora de chamar as funçoesse puder me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho a opinião de que, "se você não entende de javascript, então NEM mexa com ajax. Vá estudar primeiro".É só uma opinião, espero que não se ofenda.Ah, e a forma de chamar, o pita escreveu lá no primeiro post:

A função AjaxLink(id_target,url) é a que todos já conhecem, id_target é ai do objeto onde a página deverá ser carregada e a url é a página que será chamada;A funcao ajaxForm(id_target,id_form) é o que tem de novo, ela recebe o id de onde será carragado e o id do formulario que irá fazer a requisição. Depois o código se encarreda de pega no form o action, method, etc, e tb se encarrega de preparar o Ajax para enviar os dados de acordo com o method utilizado(POST ou GET)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho a opinião de que, "se você não entende de javascript, então NEM mexa com ajax. Vá estudar primeiro".É só uma opinião, espero que não se ofenda.Ah, e a forma de chamar, o pita escreveu lá no primeiro post:

A função AjaxLink(id_target,url) é a que todos já conhecem, id_target é ai do objeto onde a página deverá ser carregada e a url é a página que será chamada;A funcao ajaxForm(id_target,id_form) é o que tem de novo, ela recebe o id de onde será carragado e o id do formulario que irá fazer a requisição. Depois o código se encarreda de pega no form o action, method, etc, e tb se encarrega de preparar o Ajax para enviar os dados de acordo com o method utilizado(POST ou GET)

af estudar é justamente o que eu to tentando fazer e um forum eu creio que serve pra isso quanto a explicaçao dele eu entendi o que eu naum estou sabendo a forma como a funçao deve ser usada...ex: ACTION, EVENTOS etc...fiz umas funçoes pelo metodo GET funfo dai preciseri fazer em POST eu cheguei a essa materia alem disso to meio q aprendendo sò se eu naum puder contar com pessoas inteligentes pra me ajudar... fika fodsmesmo assim vlw a critica realmente eu tenho que estudar mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola PITA...

estive vendo seu codigo para ajax, me parece bem funcional, porem utilizo um outro, mas gostaria de adaptar o metodo POST para ele trabalhar normalmente... so que nao saco muito de javascript e nem xml.. meu ramo eh PHP.. vou expor o codigo que uso e gostaria que voce analizace ele e adaotasse para usar tanto GET quanto POST, assim como este seu atual codigo faix, creio que nao tera muito trabalho pois notei que os dois codigos trabalham da mesma forma, ou pelo menos parecida..

 

se voce poder adaptar eu agradeço..

 

obrigado..

 

 

function LINK_ajax(http, div_name) { //função para links	var LINK_xmlhttp = false;	try { LINK_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }	catch (e) { try { LINK_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }	catch (e) { try { LINK_xmlhttp = new XMLHttpRequest(); }	catch (e) { LINK_xmlhttp = false; }}}	if (!LINK_xmlhttp) return null;		document.getElementById('load_div').style.visibility="visible";	LINK_xmlhttp.open("GET", http, true);	LINK_xmlhttp.onreadystatechange = function() {		if (LINK_xmlhttp.readyState == 4) {			document.getElementById('load_div').style.visibility="hidden";			if (LINK_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") > -1) {				var x = LINK_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") + "<script type=\"text/javascript\">".length;				var y = LINK_xmlhttp.responseText.indexOf("</script>") - x;				eval(LINK_xmlhttp.responseText.substr(x, y));			}			if (LINK_xmlhttp.responseText.indexOf('ALERT|') > -1) {				var x = LINK_xmlhttp.responseText.indexOf('ALERT|') + "ALERT|".length;				var y = LINK_xmlhttp.responseText.indexOf('|ENDALERT') - x;				window.alert(LINK_xmlhttp.responseText.substr(x , y));			} else				document.getElementById(div_name).innerHTML = LINK_xmlhttp.responseText + ' ';		}	}	LINK_xmlhttp.send(null);  	return false;}function GET_ajax(http, div_name, frm_name) { //função para gets	var GET_xmlhttp = false;	var frm = false	var url = "";		try { GET_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }	catch (e) { try { GET_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }	catch (e) { try { GET_xmlhttp = new XMLHttpRequest(); }	catch (e) { GET_xmlhttp = false; }}}	if (!GET_xmlhttp) return null;		frm = document.getElementById(frm_name);	document.getElementById('load_div').style.visibility="visible";	url = http + "?frm_name=" + frm_name;	for (i = 0; i < frm.elements.length; i++) {		frm.elements[i].disabled = true;		if (frm.elements[i].type == "checkbox") {			if (frm.elements[i].checked)				frm.elements[i].value = 1;			else				frm.elements[i].value = 0;		}		url = url + "&" + frm.elements[i].name + "=" + escape(frm.elements[i].value);	}	GET_xmlhttp.open("GET", url, true);		GET_xmlhttp.onreadystatechange = function() {		if (GET_xmlhttp.readyState == 4) {			document.getElementById('load_div').style.visibility="hidden";			for (i = 0; i < frm.elements.length; i++) {				if (frm.elements[i].type == "checkbox")					frm.elements[i].checked = false;				if (frm.elements[i].type == "password")					frm.elements[i].value = "";				frm.elements[i].disabled = false;			}				if (GET_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") > -1) {				var x = GET_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") + "<script type=\"text/javascript\">".length;				var y = GET_xmlhttp.responseText.indexOf("</script>") - x;				eval(GET_xmlhttp.responseText.substr(x, y));			}						if (GET_xmlhttp.responseText.indexOf('ALERT|') > -1) {				var x = GET_xmlhttp.responseText.indexOf('ALERT|') + "ALERT|".length;				var y = GET_xmlhttp.responseText.indexOf('|ENDALERT') - x;				window.alert(GET_xmlhttp.responseText.substr(x , y));			} else				document.getElementById(div_name).innerHTML = GET_xmlhttp.responseText + ' ';		}	}	GET_xmlhttp.send(null);  	return false;}

 

 

PS: aqui estao os codigos para link e get..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu problema é bem mais simples acho.

 

To montando um pequeno sistema de admnistração de um site e usando o ajax pra aprender.

 

Todas as minhas paginas tem no cabeçalho:

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");

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">

<head>

<meta name="resource-type" content="document" />

<meta http-equiv="content-type" content="text/html; charset: iso-8859-1" />

<meta http-equiv="Content-Language" content="pt-br">

<META NAME="robots" CONTENT="All">

 

Portanto as minhas paginas são exibidas corrretamente tanto no IE como no Mozzila no Linux.

Meu problema está relacionado ao form.

 

1) Abro o form, preencho os dados e envio ao ajax. Os dados são gravados porém todo caractere acentuado é trocado e portanto fica errado na base de dados.

- Eu preciso escrever uma rotina em php pra tratar esses dados do form antes de gravá-lo?

- Qual a função do php que voltaria os caracteres ao padrão normal: urldecode(); rawurldecode()... Ja testei com ambos mas não funcionaram.

 

por ex.:

Digitei na caixa: ação do ajax é fantásticano banco de dados gravou:

AÇÃO DO AJAX É FANTÃSTICA

 

no retorno da pagina o conteudo exibido é:

AÃÃO DO AJAX Ã FANTÃSTICA

 

O retorno não preciso testar já que tenho muitas paginas com acentuação e o que está na base de dados é mostrado corretamente acho que devido aos headers das paginas.

 

2) Quando recupero os dados da base de dados, não consigo preencher o campo textarea, acredito que tenha que escrever uma função especifica para isso. Num form comum eu simplesmente uso no final do arquivo:

<script>

document.nomedoform.nomedocampotextarea.value=valorretornadoemphp;

</script>.

 

Como a pagina vem codificada de forma diferente não adianta eu incluir esse codigo no final da pagina porque ela não acha o javascript.

 

Bom por ora são essas as dúvidas. Se alguem souber e puder me ajudar, agradeceria muito.

 

Lauro

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom consegui resolver o primeiro problema la da acentuação no www.php.net:utf8_decode -- Converte uma string com caracteres ISO-8859-1 codificadas com UTF-8 para single-byte ISO-8859-1. Descriçãostring utf8_decode ( string data )Esta função decodifica data, assumido ser codificada em UTF-8, para ISO-8859-1. Veja também utf8_encode() para uma explicação da codificação UTF-8. simplesmente usei essa chamada ai nas variaveis que chegaram antes de gravar na base de dados.So falta agora resolver o problema do textarea quando foi editar o registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

daew galera é o seguinte, to tentando executar um javascript dentro da url chamada pelo ajax da seguinte maneira:onclick="alert('hehe');"porém não funciona, como faço para executar alguma ação desse tipo na página carregada pelo ajax??se eu retirar as '' ele funciona blza.. porem precisa chamar certas funções do tipo que citei!Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu servidor estava funcionando legal mas tava precisando de umas extensões para o projeto que estou desenvolvendo:Instalei a mbstring, iconv e sockets e sem mais nem menos a função utf8_decode() sumiu da servidor. Agora toda o acesso na parte de gravação da base de dados ficou comprometido pois essa função era responsável em corrigir os caracteres especiais vindo do form, isso significa que voltei ao ponto de partida antes de descobrir o uso dessa função.Aguem teria alguma idéia de como fazer voltar a função no php ou o uso de outra função que tenha o mesmo resultado.Agora todo acesso aos scripts responsaveis pelo processamento e gravação dos dados para com o erro: Fatal error: Call to undefined function utf8_decode() in /var/www/html/utf.php on line 3Qualquer sugestão é bem vinda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui uma solução:

Acredito que foi o mbstring o responsavel pelo sumiço das funções utf8_encode() e utf8_decode.

Pesquisando a extensão mbstring encontrei isto:

Exemplo 1. mb_convert_encoding() example

 

<?php

/* Convert internal character encoding to SJIS */

$str = mb_convert_encoding($str, "SJIS");

 

/* Convert EUC-JP to UTF-7 */

$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

 

/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */

$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

 

/* "auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" */

$str = mb_convert_encoding($str, "EUC-JP", "auto");

?>

 

Então minha solução foi:

$string="AÇÃO DO AJAX É FANTÃSTICA";

echo "original$string";

$new=mb_convert_encoding($string, "iso-8859-1", "UTF-8");

echo "<br>convert$new";

echo "<br>utf8_decoder(". utf8_decode($string) . ")";

 

Felizmente no provedor onde hospedo os sites funciona tanto com o mb_string como com o utf8_decode().

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa manom btf que encontrei um bug no seu codigo,

po tpw,

tem a pagina com o div e tal, ai a pagina que carrega pelo ajaxLink tem um codigo de script assim oh:

<script language="javascript">	function mudar(x) { 	MM_preloadImages('../fotos/teste/thumb/' + x + '');}</script>
quando abro essa pagina da erro... da uma olhada pra você ver...

 

abracao cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pita, estou começando a estudar Ajax, e tentei fazer um pequeno teste com esta sua função, mas até agora sem sucesso, sei que vou fazer uma pergunta besta mas realmente preciso pra entender, como uso esta função em um link e em um form, no onClick, onSubmit, ....., no que ?? Teria como colocar um exemplo de como usar esta função ??Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pita, estou começando a estudar Ajax, e tentei fazer um pequeno teste com esta sua função, mas até agora sem sucesso, sei que vou fazer uma pergunta besta mas realmente preciso pra entender, como uso esta função em um link e em um form, no onClick, onSubmit, ....., no que ?? Teria como colocar um exemplo de como usar esta função ??Obrigado.

opa marceloplis, eh o seguinte, no formulario nao pode dar submit, entao o botao do formulario não pode ter a funcao type="submit", você faz todo a form, e no botao você coloca type="button" e nele mesmo você coloca " onClick="ajaxForm('id_target,'id_doformulario')" " ai com isso, vai mudar a pagina, mais não fazendo o submit do form. nao sei se você intendeu...abracos

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, brunoww, funcionou legal !!!! obrigado !!!Mas estou com um outro problema, as palavras com acento são apresentadas na minha "id_target" como "?", qualquer tipo de acento. ´`~^¨, vem sempre ? no lugar.O que tenho que fazer pra ficar normal ??Obs: No I.E. tanto ajaxLink quanto o ajaxForm as palavras acentuadas vem com erro, mas no FF apenas no ajaxForm vem com erro de acentuação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.