Formulario de gravedad cargado a través de AJAX que no se envía

2 minutos de lectura

avatar de usuario de laudx
laudx

Tengo un formulario de gravedad que está siendo cargado por una función AJAX. Por alguna razón, cuando intento enviar el formulario, aparece un 400 error /wp-admin/admin-ajax.php#gf_3:1

Siguiendo las guías en línea que agregué gravity_form_enqueue_scripts(3, true); para mi header.php que no ha resuelto el problema.

El formulario funciona bien en la página de vista previa. He probado múltiples formularios y múltiples funciones, sin embargo, ninguno de mis formularios se enviará si se cargaron a través de AJAX.

Pasé muchas horas en este problema. Estoy usando Gravity Forms 2.5.1

Resulta que el evento ‘DOMContentLoaded’ que se carga con el formulario no se activaba.

En mi función que llama al formulario, activé manualmente el evento y ahora funciona como se esperaba.

    window.document.dispatchEvent(new Event("DOMContentLoaded", { bubbles: true, cancelable: true }));```

  • ¿Por qué sucede esto, se debe informar a GF?

    – Klaudio Milankovic

    23 de agosto de 2021 a las 9:40

  • desarrollador.mozilla.org/en-US/docs/Web/API/Document/… — Se activa solo en la carga inicial de htm, por lo que GF ha asumido que se activará cuando no (siempre)… Supongo que debería informarse a GF, buena idea

    – Esquivo

    24 de agosto de 2021 a las 17:34

Tengo el mismo problema y tropecé con tu pregunta aquí. Estoy cargando diferentes formularios en la misma página a través de ajax y creo que encontré la solución.

Necesita localizar ajax.url

wp_localize_script( 'change-this-to-your-theme-handle', 'ajax', array(
    'url' => admin_url( 'admin-ajax.php' )
));

Parece que GF está buscando esto si el formulario está cargado con ajax. Creo que simplemente asumen que si cargaste GF con ajax que estás usando ajax.url. En su lugar, estaba usando mi propio objeto para localizar cosas, lo que probablemente sea lo que hiciste tú también.

  • Hola Klaudio, no entiendo tu mente por “cambiar-esto-a-tu-tema-controlador”. ¡¿Cómo sé cuál es mi identificador de tema, por favor?!

    – Thống Nguyễn

    29 de julio de 2021 a las 4:40

  • El identificador de su tema es lo que haya usado para registrar otro script. Por ejemplo, al poner en cola el script, el segundo parámetro de esa función es el identificador. Compruébalo aquí desarrollador.wordpress.org/reference/functions/wp_localize_script Desplácese hacia abajo hasta los comentarios para ver el código de demostración.

    – Klaudio Milankovic

    12 de agosto de 2021 a las 12:14

¿Ha sido útil esta solución?