Duvida de javaScript

3 respostas
H

Olá a todos da lista,
Sei que aqui muta gente sabe muito javascript tb e estou com um duvida bem simples espero que possam me ajudar.
passei para o request alguns atributos como nome e endereco, e gostaria de quando clicar em um botao uma funcao pegasse esses atributos e setasse os campos do formulario com esse valor, tentei fazer assim mas não deu certo

var nmAluno=request.getAttribute("nmAluno");
function PopulaAluno(){
document.forms[0].nmResponsavel.value=nmAluno;

e no meu formulario tem o seguinte botao:

<html:button property="botao" onclick="populaAluno();"  styleClass="form-button">Aluno</html:button>

Sinceramente não gosto muito de javaScript por isso não esudo muito e tenho essas duvidas bobas :slight_smile:

3 Respostas

Rafael_Steil

Faz assim:

var start, key,url,vari,expr;     
url =  document.location.toString();
key = /\?/i;  
start = url.search(key); 
if( start > 1 && url.substring(start + 1).search("=") > 1) {   
	url = url.substring(start+1);   
	vari = url.split("&");
	
	for (i= 0 ; i <vari.length; i++) {
		expr= vari[i].split("=");
		eval ("var "+ expr[0] +" = '"+ expr[1] +"';");
	}
}

Isso ira criar as variaveis do request para vc.. entao eh soh acessar pelo nome.

Rafael

Diogenes

hklemp, o codigo do cliente não enxerga o objeto request cara…

Sinceramente não sei se javascript dah suporte a obter atributos especificos da querystring…sei q vc pode pegar toda a query com document.location.search se não me engano…

vc pode fazer algo do tipo:

...
document.forms[0].nmResponsavel.value='<%=request.getAttribute("nmAluno")%>'; 
...

Sacou?!
Não sei se eh isso q vc quer…

M

hklemp,
O java-script é interpretado pelo seu browser. Um “artificio técnico” que muita gente usa é passar os parametros pelo metodo GET, com isso vc consegue pega-los no lado do java-script com o objeto location do java-script

Um exemplo:
vc tem um servlet que vai mandar parametros pruma pagina html que contem seu java-script.
parametros que vc quer passar : nome, idade
sua servlet : ControlServlet
seu html : pagJs.html

dentro da sua Servlet vc vai ter ter que redirecionar seus parametros pro html assim :
… codigo
<seu HttpServletResquest>.sendRedirect(“pagJs.html?nome=João da Silva&idade=22”);
… codigo

Já na pagina html, no objeto Window vc tem o “location” que contem a url da pagina atual. Pra pegar esse valor vc deve pegar o “location.href”.

Então, depois de submeter sua Servlet, no lado html vc tem
location.href=<servidor>pagJs.html?nome=João da Silva&idade=22

Como o protocolo http faz encode das suas requisições todos os caracteres especiais como espaços, acentos, pontos serão codificados.
sua location.href vai ser algo do genero:
location.href=<servidor>pagJs.html?nome=Jo%2ao%20da%20Silva&idade=22

Pra solucionar isso algum algoritmo de substituição. Em qq site de cgi vc encontra a tabela dos caracteres X códigos (Não vi muito bem mas talvez aquele código do Rafael Steil faça isso). Usando o java-script 1.5 (Internet Explorer 6 e Netscape 6) vc tem a função decodeURI(encodedURI) que faz este papel.

Depois de limpar a url vc terá de “catar” os parametros vindos.
algo do tipo:

url=pagJs.html?nome=Joao da Silva&idade=22

Em primeiro lugar vc substitue os “?” por “&” não lembro muito bem a sintaxe mas será parecido com isso.

er = /&/gi; //expressao regular
url = "pagJs.html&nome=Joao da Silva&idade=22" // String 
var url2 = url.replace(er, "?");

E pra terminar vc usa a função split.

var arrayParms = new Array();
arrayParms = url2.split("&");

vc terá então:

arrayParms[0]="pagJs.html"
arrayParms[1]="nome=Joao da Silva"
arrayParms[2]="idade=22"

bom, é isso… espero ter ajudado. Essa é dos tempos que eu mexia com cgi em shell-script… hehe

[]´s
MedioCore

Criado 5 de março de 2004
Ultima resposta 5 de mar. de 2004
Respostas 3
Participantes 4