Foros del Web » Programando para Internet » Javascript »

Problema con un código javascript i AJAX

Estas en el tema de Problema con un código javascript i AJAX en el foro de Javascript en Foros del Web. Buenas. Resulta que estoy intentando hacer una página web en AJAX. Simplemente estoy ahora con el log-in de usuarios, que de momento funciona a las ...
  #1 (permalink)  
Antiguo 09/12/2008, 09:51
 
Fecha de Ingreso: julio-2005
Mensajes: 86
Antigüedad: 18 años, 9 meses
Puntos: 3
Problema con un código javascript i AJAX

Buenas.

Resulta que estoy intentando hacer una página web en AJAX. Simplemente estoy ahora con el log-in de usuarios, que de momento funciona a las mil maravillas. Pero hay un problema: Esta página tiene un calendario-agenda, el cual señala los dias importantes, y viene con un archivo "calendar-setup.js". Bien, el problema viene que al juntar estos dos archivos, entran en conflicto, y el AJAX deja de funcionar. Quisiera saber si alguien sabría decirme el porque. Os dejo aquí el código de AJAX i el del calendario, a ver si alguien pudiera ver lo que entra en conflicto y entre todos podemos solucionarlo.
Calendar-setup
Código PHP:
Calendar.setup = function (params) {
    function 
param_default(pnamedef) { if (typeof params[pname] == "undefined") { params[pname] = def; } };

    
param_default("inputField",     null);
    
param_default("displayArea",    null);
    
param_default("button",         null);
    
param_default("eventName",      "click");
    
param_default("ifFormat",       "%Y/%m/%d");
    
param_default("daFormat",       "%Y/%m/%d");
    
param_default("singleClick",    true);
    
param_default("disableFunc",    null);
    
param_default("dateStatusFunc"params["disableFunc"]);    // takes precedence if both are defined
    
param_default("dateText",       null);
    
param_default("firstDay",       null);
    
param_default("align",          "Br");
    
param_default("range",          [19002999]);
    
param_default("weekNumbers",    true);
    
param_default("flat",           null);
    
param_default("flatCallback",   null);
    
param_default("onSelect",       null);
    
param_default("onClose",        null);
    
param_default("onUpdate",       null);
    
param_default("date",           null);
    
param_default("showsTime",      false);
    
param_default("timeFormat",     "24");
    
param_default("electric",       true);
    
param_default("step",           2);
    
param_default("position",       null);
    
param_default("cache",          false);
    
param_default("showOthers",     false);
    
param_default("multiple",       null);

    var 
tmp = ["inputField""displayArea""button"];
    for (var 
i in tmp) {
        if (
typeof params[tmp[i]] == "string") {
            
params[tmp[i]] = document.getElementById(params[tmp[i]]);
        }
    }
    if (!(
params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
        return 
false;
    }

    function 
onSelect(cal) {
        var 
cal.params;
        var 
update = (cal.dateClicked || p.electric);
        if (
update && p.inputField) {
            
p.inputField.value cal.date.print(p.ifFormat);
            if (
typeof p.inputField.onchange == "function")
                
p.inputField.onchange();
        }
        if (
update && p.displayArea)
            
p.displayArea.innerHTML cal.date.print(p.daFormat);
        if (
update && typeof p.onUpdate == "function")
            
p.onUpdate(cal);
        if (
update && p.flat) {
            if (
typeof p.flatCallback == "function")
                
p.flatCallback(cal);
        }
        if (
update && p.singleClick && cal.dateClicked)
            
cal.callCloseHandler();
    };

    if (
params.flat != null) {
        if (
typeof params.flat == "string")
            
params.flat document.getElementById(params.flat);
        if (!
params.flat) {
                        return 
false;
        }
        var 
cal = new Calendar(params.firstDayparams.dateparams.onSelect || onSelect);
        
cal.showsOtherMonths params.showOthers;
        
cal.showsTime params.showsTime;
        
cal.time24 = (params.timeFormat == "24");
        
cal.params params;
        
cal.weekNumbers params.weekNumbers;
        
cal.setRange(params.range[0], params.range[1]);
        
cal.setDateStatusHandler(params.dateStatusFunc);
        
cal.getDateText params.dateText;
        if (
params.ifFormat) {
            
cal.setDateFormat(params.ifFormat);
        }
        if (
params.inputField && typeof params.inputField.value == "string") {
            
cal.parseDate(params.inputField.value);
        }
        
cal.create(params.flat);
        
cal.show();
        return 
false;
    }

    var 
triggerEl params.button || params.displayArea || params.inputField;
    
triggerEl["on" params.eventName] = function() {
        var 
dateEl params.inputField || params.displayArea;
        var 
dateFmt params.inputField params.ifFormat params.daFormat;
        var 
mustCreate false;
        var 
cal window.calendar;
        if (
dateEl)
            
params.date Date.parseDate(dateEl.value || dateEl.innerHTMLdateFmt);
        if (!(
cal && params.cache)) {
            
window.calendar cal = new Calendar(params.firstDay,
                                 
params.date,
                                 
params.onSelect || onSelect,
                                 
params.onClose || function(cal) { cal.hide(); });
            
cal.showsTime params.showsTime;
            
cal.time24 = (params.timeFormat == "24");
            
cal.weekNumbers params.weekNumbers;
            
mustCreate true;
        } else {
            if (
params.date)
                
cal.setDate(params.date);
            
cal.hide();
        }
        if (
params.multiple) {
            
cal.multiple = {};
            for (var 
params.multiple.length; -->= 0;) {
                var 
params.multiple[i];
                var 
ds d.print("%Y%m%d");
                
cal.multiple[ds] = d;
            }
        }
        
cal.showsOtherMonths params.showOthers;
        
cal.yearStep params.step;
        
cal.setRange(params.range[0], params.range[1]);
        
cal.params params;
        
cal.setDateStatusHandler(params.dateStatusFunc);
        
cal.getDateText params.dateText;
        
cal.setDateFormat(dateFmt);
        if (
mustCreate)
            
cal.create();
        
cal.refresh();
        if (!
params.position)
            
cal.showAtElement(params.button || params.displayArea || params.inputFieldparams.align);
        else
            
cal.showAt(params.position[0], params.position[1]);
        return 
false;
    };

    return 
cal;
}; 
Ajax:
Código PHP:
function POST_AJAX(urlvariables) {
        
objeto false;
        
//creamos el onjeto XMLHttpRequest para poder enviar datos mediante ajax
        
if (window.XMLHttpRequest) { // Mozilla, Safari,...
           
objeto = new XMLHttpRequest();
           if (
objeto.overrideMimeType) {
               
objeto.overrideMimeType('text/xml');
           }
        } else if (
window.ActiveXObject) { // IE
           
try {
              
objeto = new ActiveXObject("Msxml2.XMLHTTP");
           } catch (
e) {
              try {
                 
objeto = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (
e) {}
           }
        }
        if (!
objeto) {
           
alert("No se puede crear la instancia XMLHTTP");
           return 
false;
        } 
             
        
objeto.open("POST"urltrue);  /* enviaremos los datos por el metodo POST hacia checar.php */
        
objeto.setRequestHeader("Content-type""application/x-www-form-urlencoded"); /*asignamos header. Esto no tiene relacion con el sistema de logeo. Solo es necesario para poder enviar los datos mediante ajax*/
        
objeto.setRequestHeader("Content-length"variables.length);
        
objeto.setRequestHeader("Connection""close");
        
objeto.send(variables); /* enviamos las variables con un formato como este: "user=minombre&pass=123456&n=0" */
      
}
      
      
      function 
enviar(id_form,n) {  
        if (
n=='1'//si el formulario fue enviado al darle en el boton
         
{
          
document.getElementById('inp_enviar').innerHTML '<input type="submit" class="MC_enviar" name="enviar" value="Enviar"/><img src="ajax.gif"/>';
          if (
vacio(document.getElementById(id_form).user.value)==false || vacio(document.getElementById(id_form).pass.value)==false)/*si alguno de los campos de user y pass estan vacios, entonces se imprime mensaje de error. NOTA: vacio() es una funcion que verifica que alla algo diferente a "" o puros espacios en blanco. Esta funcion esta mas abajo*/
           
{
            
document.getElementById('r').innerHTML '<label class="res">Llena correctamente los campos</label>'//"r" es un div que tenemos debajo del formulario para imprimir los mensajes de error.
            
document.getElementById('inp_enviar').innerHTML '<input type="submit" class="MC_enviar" name="enviar" value="Enviar"/>';
           }
          else 
//s� SI habia llenado correctamente el user y pass, entonces se crear una cadena "variables" con los datos de user y pass con el siguiente formato: "user=minombre&pass=123456&n=0"
           
{
            var 
Formulario document.getElementById(id_form);
            var 
longitudFormulario Formulario.elements.length;
            var 
variables "";
            var 
sepCampos "";
            for (var 
i=0i<=Formulario.elements.length-1i++)
              {
               
variables += sepCampos+Formulario.elements[i].name '=' encodeURI(Formulario.elements[i].value);
               
sepCampos="&";
              }
            
//indice para saber si envio formulario
            
variables += '&n=' n
            
POST_AJAX('checar.php'variables); //se envia el nombre del archivo donde se verificaran los datos en la BD y la cadena que se acaba de crear con los datos de user y pass, hacia la funcion POST_AJAX, que lo que hace es enviar los datos por medio de AJAX utilizando el metodo POST hacia "checar.php"
           
}
         }
        else 
//si el formulario fue enviado en el body onload solo para procesos
         
{
            
variables 'n=' n
            
POST_AJAX('checar.php'variables);
         }
      }
    
      function 
avisos() {
         if ((
objeto.readyState==4) && (objeto.status==200))                     
           {
            
document.getElementById('form').innerHTML objeto.responseText;  //se inserta en el DIV "form" el mensaje de bienvenida que nos imprimio "checar.php"                    
           
}//end if 
      
}
      
     
enviar('login','0'); //se envia a la funcion "enviar()" el id del formulario y el valor 0 (cero); Este valor (0) nos indicar� que el formulario esta siendo enviado cuando la pagina se esta cargando apenas. NO lo esta enviando el usuario
     
      /*Esta funcion recorre una cadena en busca de algo diferente de espacios en blanco. Si la cadena contenia puros espacios en blanco entonces regresara False*/
      
function vacio(q) {
         for ( 
0q.lengthi++ ) {
           if ( 
q.charAt(i) != " " ) { return true }
         }
         return 
false
      

Muchas gracias por la ayuda.
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 12:12.