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

miRequest is not a function

Estas en el tema de miRequest is not a function en el foro de Frameworks JS en Foros del Web. Saludos: miRequest is not a function Ese es el mensaje que me tira el navegador al intentar enviar una petición al servidor mediante ajax. Intento ...
  #1 (permalink)  
Antiguo 26/08/2010, 19:08
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 15 años
Puntos: 4
miRequest is not a function

Saludos:

miRequest is not a function

Ese es el mensaje que me tira el navegador al intentar enviar una petición al servidor mediante ajax.

Intento hacer una consulta a la base de datos para comprobar si el nik ó el correo electrónico ya están registrados, pero me aparece ese mensaje al intentar hacer la petición. El código es de lo más simple, estoy aprendiendo AJAX con AJAX, Javascript y PHP (Anaya) como manual, y mi código, salvo cambiarle un par de cosillas, no es muy diferente del código de ejemplo del libro. Aquí lo dejo:

Código Javascript:
Ver original
  1. var consulta = function getXMLHTTPREQUEST()
  2. {
  3.     var request = false;
  4.     if(window.XMLHTTPRequest)
  5.     {
  6.         request = new XMLHTTPRequest();
  7.     }
  8.     else
  9.         {
  10.             if(windows.ActiveXObject)
  11.             {
  12.                 try
  13.                 {
  14.                     request = new ActiveXObject("Msml2.XMLHTTP");
  15.                 }
  16.                 catch(err1)
  17.                 {
  18.                     try
  19.                     {
  20.                         request = new ActiveXObject("Microsoft.XMLHTTP");
  21.                     }
  22.                     catch(err2)
  23.                     {
  24.                         request = false;
  25.                     }
  26.                 }
  27.             }
  28.         }
  29.     return request;
  30. }
  31.  
  32.  
  33.  
  34. function preguntar(consulta_dato)
  35. {
  36. parámetro GET
  37. var uurl = "inc/consulta.php?consulta="+consulta_dato+"important="+parseInt(Math.random()*99999999);
  38. consulta.open("GET", uurl, true); //El fallo aparece aquí
  39. consulta.onreadystatechange = respuesta;
  40. consulta.send(null);
  41. }
  42.  
  43. function respuesta()
  44. {
  45.     if(request.readyState == 4)
  46.     {
  47.         if(request.status==200)
  48.         {
  49.             alert("De momento, bien");
  50.         }
  51.     }
  52.     else
  53.         {
  54.            
  55.         }
  56. }

Como podeis ver, no está terminado, me he encabezonado en sacarle el fallo, pero nada, no hay manera. Este es el formulario que lo activa:

Código HTML:
Ver original
  1. <form id="registro" name="registro" action="registr.php?validate=<?php echo $rand;?>" method="post" onSubmit="return validate(this);">
  2. <!--.....-->
  3. <label>Correo Electronico*</label><br><input type="text" name="mail" id="mail" onBlur="preguntar(document.registro.mail.value);"><br>
  4. <label>Nick*</label><br><input type="text" id="nick" name="nick" onBlur="preguntar(document.registro.nick.value);"><br>
  5. <!--.....-->
  6. </form>

Antes de asignar la función a la variable (var consulta = function getXMLHTTPRequest(){}) había intentado crear la función y luego asignarla a la variable (function getXMLHTTPRequest(){} /*...*/ var consulta = getXMLHHTPRequest;), pero me decía que dicha función no estaba definida (algo ilógico, ya que la he definido justo antes de asignarla. . .).

¿Por qué me dice que una función que yo he creado no es una función?

Gracias de antemano.
  #2 (permalink)  
Antiguo 27/08/2010, 12:21
 
Fecha de Ingreso: junio-2010
Ubicación: Lomas de Zamora, Buenos Aires, Argentina
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: miRequest is not a function

En tu primer linea defines:

var consulta = function getXMLHTTPREQUEST()

pero más adelante utilizas

consulta.open(...)

Esto genera un error, ya que "consulta" contiene una referencia a la función "getXMLHTTPREQUEST", y no el valor de la misma. Deberías cambiar la primer linea por

Código:
function getXMLHTTPREQUEST()
{
    var request = false;
    if(window.XMLHTTPRequest)
    {
        request = new XMLHTTPRequest();
    }
    else
        {
            if(windows.ActiveXObject)

            {
                try
                {
                    request = new ActiveXObject("Msml2.XMLHTTP");
                }
                catch(err1)
                {
                    try
                    {
                        request = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch(err2)
                    {
                        request = false;
                    }
                }
            }
        }
    return request;
}
var consulta = getXMLHTTPREQUEST()
  #3 (permalink)  
Antiguo 28/08/2010, 19:34
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 15 años
Puntos: 4
Respuesta: miRequest is not a function

Gracias por contestar, thisguy:

He puesto la variable al final, como me dijiste. En mi primer post, comentaba que me decía que la función no estaba definida. Bueno, ahora el fallo que me da es el mismo, dice que "consulta.open is not a function".

Me he fijado también que mi código tenía un fallo, allá por la línea 24, donde ponía "if(windows.ActiveXObject)..." . Creo que le sobraba una "S" a window.ActiveXObject.

Bueno, lo dicho, me sigue diciendo que no es una función. ¿Qué estoy haciendo mal?

Gracias de nuevo.
  #4 (permalink)  
Antiguo 30/08/2010, 09:01
 
Fecha de Ingreso: junio-2010
Ubicación: Lomas de Zamora, Buenos Aires, Argentina
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: miRequest is not a function

cambia
Código javascript:
Ver original
  1. if(window.XMLHTTPRequest)
  2.     {
  3.         request = new XMLHTTPRequest();
  4.     }
por
Código javascript:
Ver original
  1. if(window.XMLHttpRequest)
  2.     {
  3.         request = new XMLHttpRequest();
  4.     }

(Notese la diferencia de mayúsculas) en XMLHttpRequest
  #5 (permalink)  
Antiguo 30/08/2010, 12:09
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 15 años
Puntos: 4
Respuesta: miRequest is not a function

Gracias por responder:

Con ese cambio y un apaño más, de momento me ha ido bien. El otro fallo que me daba era la variable request, que hay que declararla FUERA de la función, ya que si no, se queda como local, y la segunda función no la reconoce.

Muchas gracias, thisguy.

Etiquetas: ajax, function
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 09:43.