Estoy tratando de alejarme de jQuery y comenzar a usar promesas y funciones de flecha. Por mucho que lo intente, parece que no puedo pasar datos a PHP usando la búsqueda de JavaScript.
$btnarrmem.addEventListener('click',()=>{ let $url = "getMember.php"; let $data = {vid: '527571'} $data = JSON.stringify($data); console.log ($data); fetch ($url, { method:'POST', headers :{ 'Accept': 'application/json', 'Content-Type': 'application/json;charset=utf-8' }, body:$data }) .then((response)=>{ console.log (response.text()) })
El resultado es siempre
Promise {<pending>} [[Prototype]]: Promise [[PromiseState]]: "fulfilled" [[PromiseResult]]: *"Notice</b>: Undefined index: data in /mnt/development/websites/arrows/getMember.php< on line <b>7<*emphasized text**
Lo que significa para mí que PHP no está recibiendo datos.
Aquí está la misma función escrita usando jQuery y funciona tal como quiero que lo haga
let $data = {vid: '527571'} $data = JSON.stringify($data); console.log($data); $('button.qrymem').click(function () { let $data = {vid: '527571'} $data = JSON.stringify($data); console.log ($data); $.post('getMember.php', {data: $data}, function ($result) { console.log($result); $divquery.text($result); }) })
Agradecería cualquier sugerencia que me ayude a moverme en la dirección correcta.
jQuery URL codifica los datos. Debe llamar a encodeURIComponent()
para hacerlo y luego pasarlo como el valor del parámetro de data
. El equivalente con fetch()
es:
$btnarrmem.addEventListener('click', () => { let $url = "getMember.php"; let $data = { vid: '527571' }; $data = JSON.stringify($data); console.log($data); fetch($url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }, body: `data=${encodeURIComponent($data)}` }) .then((response) => { console.log(response.text()) }) });