Данные формы пусты при отправке формы через ajax с использованием jQuery в WordPress
Я отправляю форму через ajax используя jquery в WordPress, но к сожалению получаю пустую форму в console.
Вот мой 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');
}
}
});
}
А вот код моего 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);
}
Ajax файл возвращает 0.
Пожалуйста, помогите разобраться.
Заранее спасибо.
Попробуйте использовать .serialize() вместо 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('fail');
}
}
});
}
Или используйте .serializeArray(), если вам нужны данные в виде массива, а не строки.
РЕДАКТИРОВАНИЕ - согласно комментариям, удалите processData:false и contentType:false из ajax-запроса
Я использовал функцию .serialize(), но, к сожалению, она не передает данные файлов.
Vipin
Хорошо, теперь я использую функцию serializeArray() и посмотрим, что получится... скоро обновлю информацию.
Vipin
Теперь данные выводятся в консоли при использовании функции serializeArray(), но POST все еще пуст, к сожалению.
Vipin
Итак, проблема решена следующими шагами -
1. Убрать processData:false из ajax запроса
2. Убрать contentType:false из ajax запроса
3. Использовать функцию serializeArray() вместо FormData().
Спасибо за помощь.
Удачи
Vipin
@Vipin, не мог бы ты отредактировать этот ответ или разместить свой собственный с твоим решением? Я не понял, как заменить formdata на serializeArray.
Basti