Данные формы пусты при отправке формы через 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()
, но, к сожалению, она не передает данные файлов.

Хорошо, теперь я использую функцию serializeArray()
и посмотрим, что получится... скоро обновлю информацию.

Теперь данные выводятся в консоли при использовании функции serializeArray()
, но POST
все еще пуст, к сожалению.

Итак, проблема решена следующими шагами -
1. Убрать processData:false
из ajax запроса
2. Убрать contentType:false
из ajax запроса
3. Использовать функцию serializeArray()
вместо FormData()
.
Спасибо за помощь.
Удачи

@Vipin, не мог бы ты отредактировать этот ответ или разместить свой собственный с твоим решением? Я не понял, как заменить formdata на serializeArray.
