32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
// networkUtils.js
|
|
export function sendRequest(url, method = "GET", data = null) {
|
|
console.log("Sending request to:", url, "with method:", method);
|
|
const options = {
|
|
method,
|
|
credentials: 'include', // include cookies in requests
|
|
headers: {}
|
|
};
|
|
|
|
// If data is provided and is not FormData, assume JSON.
|
|
if (data && !(data instanceof FormData)) {
|
|
options.headers["Content-Type"] = "application/json";
|
|
options.body = JSON.stringify(data);
|
|
} else if (data instanceof FormData) {
|
|
// For FormData, don't set the Content-Type header; the browser will handle it.
|
|
options.body = data;
|
|
}
|
|
|
|
return fetch(url, options)
|
|
.then(response => {
|
|
console.log("Response status:", response.status);
|
|
if (!response.ok) {
|
|
return response.text().then(text => {
|
|
throw new Error(`HTTP error ${response.status}: ${text}`);
|
|
});
|
|
}
|
|
return response.json().catch(() => {
|
|
console.warn("Response is not JSON, returning as text");
|
|
return response.text();
|
|
});
|
|
});
|
|
} |