Estoy tratando de obtener los detalles de la orden de compra del servidor
Este es mi código:
function getPurchaseOrderInfo() { try { let po_ref = document.getElementById("po_ref").value; let data = new FormData(); data.append("po_ref", po_ref); data.append("request_token", request_token); fetch(URL_ROOT + "purchase-orders/get_purchase_order_info", { method: "POST", body: data, }) .then((res) => res.json()) .then((msg) => { console.log(msg); return msg.status ? msg.data : false; }); } catch (error) { console.log(error); } } console.log(getPurchaseOrderInfo());Esto es lo que obtuve al ejecutar el script.
No tengo idea de por qué obtengo un valor indefinido en lugar del objeto que se muestra en console.log(msg);
Necesito el objeto para imprimir una tabla y mostrar detalles al usuario.
Tienes que devolver la búsqueda también. El retorno que está poniendo dentro del bloque luego regresa a la búsqueda y no a getPurchaseOrderInfo.
Fetch devuelve una promesa, por lo .then() también es una promesa. Si desea usar los datos fuera de la función, puede devolver la promesa y usarla en cualquier lugar donde invoque la función.
Aquí hay un ejemplo simple con ES6:
function myFunc(){ return fetch(…).then(res => res.json()) } function anotherFunc(){ myFunc() .then(data => { console.log(data); }); }Como nota al margen, personalmente prefiero ES7 async/await, es mucho más simple para mí.