Aquí está mi código para enviar datos al servidor, pero siempre recibo este error.
let data = { "email": "test@gmail.com", "language": "en", "country": "en", "istestentry": false }; let jsonData = JSON.stringify(data); let encodedData = encodeURIComponent(jsonData); let url = "https://example.org/b/receiver/external"; let fetchUrl = url + "?datajsonstr=" + encodedData + "&_=" + (new Date()).valueOf(); let datafetch = fetch(fetchUrl); const [fetchedData, setFetchedData] = useState(''); async function fetchData(){ const {data} = await axios.post( datafetch ) setFetchedData(data) } useEffect(() => { fetchData() }, []) const handleSubmit = (event) => { event.preventDefault(); fetchData() };No sé cómo resolver este problema.
Está intentando enviar una promesa en lugar de datos en cadena. let datafetch = fetch(fetchUrl); te da una promesa. También el envío de datos a través de parámetros se realiza con solicitudes de get . Así que supongo que es posible que deba realizar una solicitud de get :
let fetchUrl = url + "?datajsonstr=" + encodedData + "&_=" + (new Date()).valueOf(); const [fetchedData, setFetchedData] = useState(''); async function fetchData(){ const {data} = await axios.get(fetchUrl) setFetchedData(data) } (PS get o post depende de cómo su API maneje las solicitudes. Puede elegir la correcta)
Lo resolví así. si no quieres usar Axios, puedes resolverlo también así.
const [dataDone, setDataDone] = useState(false);
useEffect(() => { let data = { "email": "test@gmail.at", "language": "de", "country": "de", "istestentry": false }; let jsonData = JSON.stringify(data); let encodedData = encodeURIComponent(jsonData); let url = "https://org.com; let fetchUrl = url + "?datajsonstr=" + encodedData + "&_=" + (new Date()).valueOf(); let datafetch = fetch(fetchUrl); datafetch.then(data => { setDataDone(true) }) }, [])