Los datos del formulario están vacíos al enviar el formulario mediante ajax usando jquery en WordPress
Estoy enviando un formulario a través de ajax usando jquery en WordPress
pero desafortunadamente obtengo el formulario vacío en la consola
.
Aquí está mi código jquery -
function step1SaveData(){
var formData = new FormData(jQuery('#tpform1')[1]);
console.log(formData);
jQuery.ajax({
type:"POST",
url:'http://lexem.in/wp-admin/admin-ajax.php',
processData:false,
contentType:false,
data:{
action:'tpartners',
formdata:formData,
},
success:function(data){
var insertedID = data.trim();
if(insertedID!='fail'){
}else{
console.log('fail');
}
}
});
}
Y aquí está mi código del archivo ajax -
add_action( 'wp_ajax_tpartners', 'save_update_data' );
add_action( 'wp_ajax_nopriv_tpartners', 'save_update_data' );
function save_update_data(){
print_r($_POST);
print_r($_FILES);
}
El archivo Ajax devuelve 0.
Por favor, ayúdenme a resolverlo.
Gracias de antemano.

Prueba usando .serialize()
en lugar de FormData
function step1SaveData(){
var formData = jQuery('#tpform1').serialize();
console.log(formData);
jQuery.ajax({
type:"POST",
url:'http://lexem.in/wp-admin/admin-ajax.php',
data:{
action:'tpartners',
formdata:formData,
},
success:function(data){
var insertedID = data.trim();
if(insertedID!='fail'){
}else{
console.log('falló');
}
}
});
}
o usa .serializeArray()
si prefieres tus datos en un array en lugar de una cadena.
EDITADO - según los comentarios, elimina processData:false
y contentType:false
de la llamada ajax

He utilizado la función .serialize()
pero desafortunadamente no envía los datos de archivos.

Vale, ahora estoy usando la función serializeArray()
y veremos qué pasa... te actualizaré lo antes posible.

Ahora tengo datos en la consola usando la función serializeArray()
pero el POST
sigue vacío, desafortunadamente.

Entonces, finalmente el problema se resolvió siguiendo estos pasos -
1. Eliminar processData:false
de la solicitud ajax
2. Eliminar contentType:false
de la solicitud ajax
3. Usar la función serializeArray()
en lugar de FormData()
.
Gracias por tu ayuda.
Saludos

@Vipin ¿podrías por favor editar esta respuesta o publicar tu propia respuesta con tu resultado? No entendí cómo reemplazar formdata por serializeArray.
