Dúvida AJAX

0 respostas
D
Pessoal estou tentando utilizar o AJAX em páginas JSP, tenho um código em PHP que estou tentando converter para JSP, mas não conseguindo fazer funcionar, agradeço se alguém puder me dar uma força. Este é o código em PHP que tenho:
<?php
	/*
		Exemplo de busca em combos duplos.
		Este script preencherá arrays JavaScript com as
		informações de produtos e suas categorias
		deixando o processamento no lado cliente (browser)
	*/

	$_con  = new mysqli("localhost","root","dv1010","BD_AJAX" );
	if(!$_con) {  
		echo "Não foi possivel conectar ao MySQL. Erro #" .
				mysqli_connect_errno() . " : " . mysql_connect_error();
		exit;
	}
	
	/* 
		Segundo: Preencher um array JavaScript com a ligação entre Categoria->Produto
	*/
	
	$_docxml = new DOMDocument('1.0','iso-8859-1');
	$_resp   = $_docxml->createElement('categoria');
	$_att    = $_docxml->createAttribute("id");
	$_id	 = $_docxml->createTextNode($_GET["categoria"]);
	$_att->appendChild($_id);
	$_resp->appendChild($_att);
	
	if(!empty($_GET["categoria"])) {
		$_sql = "SELECT cod_produto, descricao FROM produto 
				 WHERE categoria_id = {$_GET["categoria"]}
				 ORDER BY categoria_id,descricao";
	
		$_res = $_con->query($_sql);
	
		if($_res===FALSE) {
			$_err = $_docxml->createElement("ERRO");
			$_tex = $_docxml->createTextNode("Erro na Busca de Produtos");
			$_err->appendChild($_tex);
			$_docxml->appendChild($_err);
		} else {
			while($_row = $_res->fetch_assoc()) {
				$_prod   = $_docxml->createElement("produto");
				$_cod    = $_docxml->createElement("codigo");
				$_id	 = $_docxml->createTextNode($_row["cod_produto"]);
				$_cod->appendChild($_id);
				$_prod->appendChild($_cod);
				$_desc	 = $_docxml->createElement(iconv('iso-8859-1','utf-8',"descricao"));
				$_d      = $_docxml->createTextNode($_row["descricao"]);
				$_desc->appendChild($_d);
				$_prod->appendChild($_desc);
				$_resp->appendChild($_prod);
			}
		}
	}
	
	$_docxml->appendChild($_resp);
	header('Content-type: application/xml');
	echo $_docxml->saveXML();
?>
E este é o que tentei transformar para JSP:
<%
	/*
		Exemplo de busca em combos duplos.
		Este script preencherá arrays JavaScript com as
		informações de produtos e suas categorias
		deixando o processamento no lado cliente (browser)
	*/

	request.setCharacterEncoding("UTF8");

        //Connection conn = new ConexaoSTP().getConnection();
        Connection conn = new ConexaoTESTE().getConnection();
        PreparedStatement p = null;
        ResultSet rs = null;
        try{
            
            out.println("<script>alert('Aqui');</script>");
                String query = "";

	/* 
		Segundo: Preencher um array JavaScript com a ligação entre Categoria->Produto
	*/
	
	String docxml = new DOMDocument('1.0','iso-8859-1');
	String resp   = docxml->createElement(request.getParameter("categoria"));
        out.println("resp: " + resp);
	String att    = docxml->createAttribute(request.getParameter("id"));
	String id	 = docxml->createTextNode(request.getParameter("categoria"));
	att->appendChild(id);
	resp->appendChild(att);
        String prod;
        String cod;
        String desc;
        String d;
        String err;
	String tex;

	//if(!empty($_GET["categoria"])) {
		query = "SELECT cod_produto, descricao FROM produto " +
                        " WHERE categoria_id = ? " +
                        " ORDER BY categoria_id,descricao";
	
                    p = conn.prepareStatement(query);
                    p.setString(1, request.getParameter("categoria"));
                    rs = p.executeQuery();
	
		if(rs.next()) {
			err = docxml->createElement("ERRO");
			tex = docxml->createTextNode("Erro na Busca de Produtos");
			err->appendChild(tex);
			docxml->appendChild(err);
		} else {
			while(rs.next()) {
				prod   = docxml->createElement("+rs.getString("produto")+");
				cod    = docxml->createElement("+rs.getString("codigo")+");
				id	 = docxml->createTextNode("+rs.getString("cod_produto")+");
				cod->appendChild(id);
				prod->appendChild(cod);
				desc	 = docxml->createElement(iconv('iso-8859-1','utf-8',"descricao"));
				d      = docxml->createTextNode("+rs.getString("descricao")+");
				desc->appendChild(d);
				prod->appendChild(desc);
				resp->appendChild(prod);
			}
		}
	//}

	docxml->appendChild(resp);
	header('Content-type: application/xml');
	out.print(docxml->saveXML());
        }catch(Exception e){
    out.print("<script>alert('Erro na Base de Dados');</script>");
    //out.print("Erro na conexão com o banco de dados!" +e.getMessage());
}
finally{
    try{
        p.close();
        rs.close();
        conn.close();
    }catch (Exception e){
        //e.printStackTrace();
    }
}
%>
Estou utilizando um arquivo ajax.js para interagir com o código PHP, agradeço se alguém puder me dar uma ajuda em converter este código de PHP para JSP ou se puder me dizer se existe um outro tipo de arquivo .js que devo utilizar para o JSP. Segue abaixo o conteúdo do arquivo ajax.js:
// Objeto AJAX para comunicação Assincrona com um servidor de aplicações WEB
function AJAX(url,metodo,params,processa,modo) {
	this.url = url;
	this.metodo = (metodo) ? metodo : 'GET';
	this.params  = (metodo='GET') ? null : params;
	this.processaresultado = processa;
	this.Header = new Array();
	this.modo = (modo) ? modo : 'T';
	if(this.modo!='T'&&this.modo!='X') {
		this.modo = 'T';
	}
	this.conectar();
}
AJAX.prototype = {
	addHeader:	function(h,v) {
					this.Header[h] = v;
				},
	delHeader:	function(h) {
					delete(this.Header[h]);
				},
	setHeader:	function() {
					if(this.httprequest==null) { return;} 
					for(h in this.Header) {
						this.httprequest.setRequestHeader(h,this.Header[h]);
					}
				},
	conectar:			function() {
							if(this.url==undefined||this.url=='') {
								return; 
							}
							this.httprequest = null;
						   	if (window.XMLHttpRequest) { // Mozilla, Safari,...
					         	this.httprequest = new XMLHttpRequest();
				        	} else if (window.ActiveXObject) { // IE
					         	try {
							     	 this.httprequest = new ActiveXObject("Msxml2.XMLHTTP");
				    	     	} catch (e) {
				               		try {
		        		           	 this.httprequest = new ActiveXObject("Microsoft.XMLHTTP");
									} catch (e) {}
								}
							}
							if(this.httprequest!=null&&this.httprequest!=undefined) {
								var obj = this;
								this.httprequest.onreadystatechange = 	function() {
																			obj.processaretorno.call(obj);
																		}
								if(this.metodo==undefined||this.metodo=='') { this.metodo = 'GET';}
					        	this.httprequest.open(this.metodo,this.url, true);
								this.setHeader();
						        this.httprequest.send(this.params);
							}
						},
	processaretorno:	function() {
							if(this.httprequest.readyState==4) {
								if(this.httprequest.status==200) {
									var resp = (this.modo=='T') ? 
												this.httprequest.responseText : 
												this.httprequest.responseXML;
									if(this.processaresultado!=null) {
										this.processaresultado(resp);
									} else {
										document.write(resp);
									}
								} else { 
									this.processaerro();
								}
							}
						},
	processaerro:		function() {
							alert(this.httprequest.status + '-' + this.httprequest.statusText + ' :-> ' + this.url);
						}
}
Criado 8 de junho de 2006
Respostas 0
Participantes 1