Utilizarea Axios în WordPress pentru cereri AJAX
Am o întrebare rapidă. A reușit cineva să folosească Axios în WordPress pentru a face cereri AJAX (wp_ajax cu action - apelând o funcție) nu prin REST API și cum ați făcut acest lucru?
Se pare că Axios trimite un JSON și ori de câte ori încerc cererea primesc un 0 ca răspuns. Totuși, folosind jQuery AJAX funcționează fără probleme.

poți folosi FormData
un exemplu:
let form_data = new FormData;
form_data.append('action', 'myAction');
form_data.append('first_name', 'my first name');
form_data.append('phone', 'my phone');
axios.post(myVars.ajax_url, form_data).then(function(response){
console.log(response.data);
})

Acesta este un mod solid. Evită utilizarea unei alte biblioteci sau a unei funcții care are compatibilitate limitată cu versiunile anterioare.

de ce nu este acceptat acest răspuns? sunt supărat. Și întrebarea a primit doar un vot în sus (și acela de la mine)??? ce se întâmplă pe stackoverflow????

A funcționat excelent pentru mine!! Primeam întotdeauna 0 folosind axios.post... iar cu această soluție problema a fost rezolvată. Știi de ce funcționează codul tău magic?

Trebuie să trimiteți datele în formatul application/x-www-form-urlencoded.
Deoarece axios trimite json, $_REQUEST['action']
nu este primit de WordPress și acesta returnează '0'.
Pentru a realiza acest lucru, puteți utiliza fie API-ul URLSearchParams, fie Qs.
Acum să presupunem că jQuery-ul vostru arăta astfel
var data = { action: 'get_names', key2:'value2' ...... };
jQuery.post('/wp-admin/admin-ajax.php', data )
.done( function (response) {
console.log(response);
})
.fail( function (error) {
console.log(error);
});
Atunci, folosind URLSearchParams, codul corespunzător în Axios va fi
var params = new URLSearchParams();
params.append('action', 'get_names');
params.append('key2', 'value2');
// params.append('key3', 'value3');
axios.post('/wp-admin/admin-ajax.php', params )
.then( function (response) {
console.log(response.data);
})
.catch( function (error) {
console.log(error);
});
SAU dacă utilizați Qs.js, trebuie să încărcați Qs înaintea scriptului vostru
var data = { action: 'get_names', key2:'value2' ...... };
axios.post('/wp-admin/admin-ajax.php', Qs.stringify( data ))
.then( function (response) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
Acest lucru este explicat mai detaliat în următorul link.
