Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con buscador AJAX

Estas en el tema de Problemas con buscador AJAX en el foro de Frameworks JS en Foros del Web. Hola saludos a todos, ahora tengo un problema con un buscador en javascript que jalo con AJAX, el asunto es que todo jala bien cuando ...
  #1 (permalink)  
Antiguo 21/01/2009, 10:47
 
Fecha de Ingreso: octubre-2003
Ubicación: Apizaco Tlaxcala
Mensajes: 11
Antigüedad: 21 años, 1 mes
Puntos: 0
Problemas con buscador AJAX

Hola saludos a todos, ahora tengo un problema con un buscador en javascript que jalo con AJAX, el asunto es que todo jala bien cuando le pongo una palabra a buscar el problema es que despues de la primera busqueda si ingreso una nueva palabra ya no me acciona la funcion de busqueda y se queda en blanco y no hace absolutamente nada.

dejo el código del buscador, página que jalo del buscador a la principal por via de ajax y el código con el que hago las llamadas ajax haber si alguién me puede ayudar con este problema.

buscador.js

Código:
//CONFIGURACION
var dominio = 'canijaster.com'		//dominio desde el que se ejecuta el buscador
var extension = 'html'			//extension de las paginas del site (htm o html)
var pagina_buscador = '/test/buscadorjs/buscadorJS.html'	//ruta y nombre de la pagina de busqueda (con barra por delante)
var buscapa = 'buscadorJS.html' // nombre de la pagina del buscador canijaster
var id_div = 'contenidos' // nombre del div contenedor 
var imagen_relevancia = 'punt'		//ruta y prefijo nombre de imagenes relevancia (punt_on.gif y punt_off.gif)

var tipo_fuente = 'Verdana, Arial, Serif'
var grosor_fuente = '400'
var color_fuente = '#483713'
var tamano_fuente = '0.9em'

var tamano_fuente_titulo = '1.1em'
var grosor_fuente_titulo = '600'
var color_fuente_titulo = '#A25151'

var color_fondo = '#FAFAF5'

var color_fuente_clave = '#FF0000'

var color_enlace = '#554B8B'
var grosor_enlace = '600'
var color_enlace_visitado = '#AD83B4'
var color_enlace_activo = '#DD0000'
var fondo_enlace_visitado = '#FFA4A4'

var resXpag = 5					//numero de resultados por pagina
var color_subrayado = '#FFFF00'			//color fondo palabra clave subrayada en resultados busqueda
//FIN CONFIGURACION

//NO CAMBIES NADA A PARTIR DE AQUI SI NO SABES LO QUE HACES

//variables globales
var accion
var f = '<p></p>'
var h = 465
var g = 664950
var totales			//numero de entradas encontradas
var Pagina = ''		//string que contendra la pagina a mostrar
var resultados = ''	//string reusltados busqueda
var clave2			//palabra a buscar
var res = new Array()	//guarda relevancias busqueda

var caracter = new Object(5) 
caracter[0] = 'á'
caracter[1] = 'é'
caracter[2] = 'í'
caracter[3] = 'ó'
caracter[4] = 'ú'

var caracter_nuevo = new Object(5)
caracter_nuevo[0] = 'a'
caracter_nuevo[1] = 'e'
caracter_nuevo[2] = 'i'
caracter_nuevo[3] = 'o'
caracter_nuevo[4] = 'u'

var caracter_nuevo2 = new Object(5)
caracter_nuevo2[0] = '[áa]'
caracter_nuevo2[1] = '[ée]'
caracter_nuevo2[2] = '[íi]'
caracter_nuevo2[3] = '[óo]'
caracter_nuevo2[4] = '[úu]'

//obtiene longitud de la base de datos
var longitud = BaseDatos.length


function CalculaRelevancia(indice) {

	var CadenasEntrada
	var parciales = 0
	
	//divide la cadena de resultados en subcadenas y escribe los resultados
	CadenasEntrada = BaseDatos[indice].split(";")
	
	//recorre las subcadenas en busca de la clave, para asignar relevancia
	for (var n = 0; n < CadenasEntrada.length; n++) {
		if ( CadenasEntrada[n].search(clave2) != -1 ) {
			parciales++
		}
	}

	if ( parciales != 0 ) {
		res[ res.length ] = parciales + '|' + indice
	}
}

//escribe codigo HTML
function MuestraPagina( htmlData ) {
	if (document.getElementById) {
		document.getElementById("areaDatos").innerHTML = htmlData
	} else if (document.all) {
		document.all["areaDatos"].innerHTML = htmlData
	} else {
		return
	}
}

// lanza proceso busqueda
// nuevaBusqueda = 0	>> buscar
// nuevaBusqueda != 0	>> usar resultados de busqueda anterior
//				   en este caso, nuevaBusqueda tiene el total	
function IniciaBuscador(palabraClave, paginacion, nuevaBusqueda) {
	
	//inicia variables globales
	var desde = 0
	var partes
	var CadenasEntrada
	var descripcion = ''
	totales = nuevaBusqueda		//a 0 si nueva busqueda

	//detiene busqueda si palabra clave vacia
	if ( palabraClave == "" ) {
		alert("¡Introduzca cadena de búsqueda!")
		return
	}
buscadorJS.html , a esta la llamo desde el index.html via AJAX

Código:
<html>
<head>
<title> ---- </title>
</head>
<body>
	<h1>Busquedas Camping</h1>
	<div id="areaDatos">
	</div>
		<script type="text/javascript">
MuestraBuscador();
</script>
</body>
</html>
codigo.js <-- con este hago las llamadas AJAX

Código:
// Documento JavaScript
// Esta función cargará las paginas
function llamarasincrono(url, id_contenedor){
var pagina_requerida = false
if (window.XMLHttpRequest) {// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest()
} else if (window.ActiveXObject){ // pero si es IE
try {
pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){ // en caso que sea una versión antigua
try{
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor)
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml

/*function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
 var scs=pagina_requerida.responseText.extractScript();
 document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText;
 scs.evalScript(); 
//document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText
}*/

function cargarpagina(pagina_requerida,id_contenedor){
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)) {
        var scs=pagina_requerida.responseText.extractScript();    //capturamos los scripts
        document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
       //id_contenedor.innerHTML=pagina_requerida.responseText;
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  
	}else{document.getElementById (id_contenedor).innerHTML ="Cargando ..."}
}

function nuevoAjax(){
	var xmlhttp=false;
 	try {
 		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			xmlhttp = false;
 		}
  	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
 		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}
y el interpretador de javascript que viene de AJAX

Código:
var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
        /**
        * Eval script fragment
        * @return String
        */
        String.prototype.evalScript = function()
        {
                return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
        };
        /**
        * strip script fragment
        * @return String
        */
        String.prototype.stripScript = function()
        {
                return this.replace(new RegExp(tagScript, 'img'), '');
        };
        /**
        * extract script fragment
        * @return String
        */
        String.prototype.extractScript = function()
        {
                var matchAll = new RegExp(tagScript, 'img');
                return (this.match(matchAll) || []);
        };
        /**
        * Eval scripts
        * @return String
        */
        Array.prototype.evalScript = function(extracted)
        {
                var s=this.map(function(sr){
                         var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
                         if(window.execScript){
                              window.execScript(sc);
                         }
                        else
                       {
                           window.setTimeout(sc,0);
                        }
                });
                return true;
        };
        /**
        * Map array elements
        * @param {Function} fun
        * @return Function
        */
        Array.prototype.map = function(fun)
        {
                if(typeof fun!=="function"){return false;}
                var i = 0, l = this.length;
                for(i=0;i<l;i++)
                {
                        fun(this[i]);
                }
                return true;
        };
Perdon ya se que es mucho código pero lo puse todo para que sea mas fácil identificar el error, alguién sabe que tengo que hacer para poder hacer una nueva busqueda cuando ya me dio un resultado?

Gracias de antemano por cualquier aportación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:46.