2012-05-07 63 views
7

para ser honesto, soy un principiante total con jQuery y ahora estoy atascado. Deseo enviar datos de mi formulario HTML a un php, agrega los datos a una base de datos y devuelve un valor que me gustaría mostrar en mi HTML original. Aquí está mi código:La función jQuery ajax devuelve un error

$.ajax({ 
    type: "POST", 
    url: "http://mysite.com/process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

devuelve un objeto jqXHR con status = 0, statusText = "error" y vacío responseText. Sin embargo, mi php parece funcionar, veo mis datos insertados en mi DB. ¿Qué estoy haciendo mal?

Cualquier ayuda sería apreciada. ¡Gracias de antemano!

EDITAR: Consola de Chrome dice XMLHttpRequest no puede cargar http://mysite.com/data.php. El origen http://www.mysite.com no está permitido por Access-Control-Allow-Origin.

+0

¿qué encabezados envía tu script php? ¿Qué salida? – Fender

+0

¿Has mirado la solicitud/respuesta en Firebug o alguna otra herramienta? –

+0

PHP simplemente imprime el texto (imprimir $ datos;). Acabo de ver la solicitud con Chrome: Texto de estado: (cancelado) Tipo: application/x-www-form-urlencoded; charset = UTF-8 – nXu

Respuesta

1

El comentario de ShelbyZ me llevó a la solución:

El navegador se negó a ejecutar la solicitud cuando traté de usar una URL absoluta, tuve que escribirla como relativa.

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

¡Gracias!

0

Prueba esto (que se olvidó de cerrar un soporte):

$.ajax({ 
    ... 
    success: function(data){ 
    getContentBox().innerHTML = data; 
    } 
}); 
+0

Ergh, cierto, en mi script está allí, es solo un error de copiar y pegar. Gracias también. – nXu

0

Por qué no utilizar el construido en función de puesto de jQuery para simplificar este ejemplo

  $.post('http://mysite.com/process.php', mydata, function(data) { 
       if (data.status == 1) { 
        getContentBox().html() = data; 
       } else { 
        alert(data.status); 
        alert(data.statusText); 
        alert(data.responseText); 
       } 
      }); 

no estoy seguro de lo que sus respuestas de estado es así que puede que tenga que editar eso, pero esto funcionará si lo pone dentro de un $('form here').submit(function() {POSTCODEHERE});

0

Tuve el mismo problema. La función Ajax estaba vinculada al botón (type = "submit") dentro del <form>, por lo que siempre que presioné este botón, mi página se recargó y la función error funcionó en lugar de success. Realmente no sé cómo se relaciona esto, pero cuando agrego event.preventDefault() al oyente de acciones del botón, funciona bien.

Cuestiones relacionadas