Detectar si se envió POST

¿Existe alguna solución para detectar si se ha enviado un POST con jQuery?

Mi situación es que tengo un complemento WP (formulario de contacto 7) que envía los datos a través de una función jQuery ajax. Cuando el formulario se completa correctamente (valida), el usuario debe ser enviado a la página X.

He intentado con lo siguiente sin ningún buen resultado:

if ($(".wpcf7-mail-sent-ok").is(":visible")){
        window.location.href = "http://stackoverflow.com";
    });

Creo que esto no funciona porque la clase "wpcf7-mail-sent-ok" aparece solo cuando jQuery envía el formulario y es válido. Por lo tanto, no está allí para ser "detectado" por mi código anterior.

¿Cómo soluciono este problema?

preguntado el 12 de junio de 12 a las 12:06

¿Puede proporcionar una parte de su script ajax?

¿Qué hay en la forma de acción? -

No estoy seguro de qué código necesitaba, así que publiqué el complemento del agujero: pastebin.com/wMk8xHdw -

4 Respuestas

if($(".wpcf7-mail-sent-ok").length)

Respondido el 12 de junio de 12 a las 12:06

No funcionó, me temo. Creo que es porque otra función jQuery produce el "wpcf7-mail-sent-ok" sin volver a cargar la página. Entonces, el código que escribiste no puede encontrarlo porque no está en el código fuente. - John Smith

Debería detectar cualquier cosa en el DOM, sin importar cómo llegó allí. - Thomas

Puede detectar inserciones de DOM con DOMNodeInserted evento. Si piensas wpcf7-mail-sent-ok se inserta solo después de la llamada ajax, entonces puede vincular este evento.

$(document).on('DOMNodeInserted', '.wpcf7-mail-sent-ok', function() {
    window.location.href = 'http://stackoverflow.com'
})

Respondido el 12 de junio de 12 a las 13:06

live está en desuso "A partir de jQuery 1.7, el método .live() está en desuso. Use .on() para adjuntar controladores de eventos. Los usuarios de versiones anteriores de jQuery deben usar .delegate() en lugar de .live()". - Thomas

Puedes usar algo como Fiddler para inspeccionar el tráfico o Chrome -> clic derecho -> "inspeccionar elemento" -> "Red".

Respondido el 12 de junio de 12 a las 12:06

Encuentra ese ajax en tu página y busca su success función, coloque una alerta ('hola') allí y sabrá si se ejecuta.

Respondido el 12 de junio de 12 a las 12:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.