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