#javascript #jquery #laravel-7
#javascript #jquery #laravel-7
Вопрос:
вот мой обработчик формы javascript, где я получаю данные из формы, чтобы отправить их в качестве запроса в API
import { Store } from './http/requests.js';
$(document).ready(function () {
$('#form_submit').submit(function (e) {
e.preventDefault();
var formData = new FormData(this);
Store(formData);
});
});
js запрашивает обработчик файлов
там, где я использую настраиваемый post, функции get для отправки данных с параметрами, которые я предоставляю для него
import { get, post } from '../helper.js';
let pageName = window.location.pathname;
pageName = pageName.slice(1, pageName.length - 5);
export const Store = (value) => {
switch (pageName) {
case 'add_car':
post('user/create_car', value, true, 'multipart/form-data')
.then((res) => {
console.log(res);
return res;
})
.catch((err) => console.log(err));
default:
break;
}
};
затем вспомогательный файл, в котором я использую выборку, получает, публикует с опцией, которую я получаю от «requests.js » файл и предоставьте его здесь
import { Local as loc } from './localStorage.js';
const API_URL = 'http://127.0.0.1:8000/api';
// token if exists in localStorage
const token = loc('get', 'token');
// POST Request
export const post = (
url,
formData,
auth = false,
type = 'application/json',
providedToken = token,
) => {
return fetch(`${API_URL}/${url}`, {
method: 'POST',
body: JSON.stringify(formData),
headers: {
'Content-Type': type,
Authorization: auth ? `Bearer ${providedToken}` : null,
},
})
.then((res) => res.json())
.then((res) => {
console.log(res);
return res;
})
.catch((err) => console.log(err));
};
и, наконец, Laravel API Cotroller, где я пытался отладить проблему
public function create_car(Request $request)
{
return (response()->json([
"files" => $_FILES,
"all Request data" => $request,
]));
}
ответ, который я получаю, когда отправляю данные из javascript в Laravel API
API gives me back this empty object as a response
Комментарии:
1. Из-за ошибки кажется, что вы получаете традиционные данные формы, но указанный вами код — ‘application / json’?
2. @JasonGoemaat нет, я отлаживаю его, и я уверен, что я отправляю данные формы … спасибо JasonGoemaat
3. Хммм… Похоже, ошибка «Отсутствует граница формы в multipart / form-data», кажется, что у нее есть ‘multipart / form-data’ и не удается найти границу, но ваш post устанавливает тип в application / json»… (
type = 'application/json'
). Для чего это, если вы отправляете данные формы?4. это своего рода установка значения по умолчанию в аргументах функции …. моя функция post() и у нее есть собственные аргументы post(blah1, blah2, balh3) .. это базовый вид аргументов функции ….. если вы хотите установить значение по умолчанию для аргумента, например: post (blah1 = ‘something’, blah2, blah3) … у balh1 есть значение по умолчанию, если вы передали значение vaue в blah1, оно будет изменено на из-за переданного значения, если вы этого не сделали, значение по умолчанию будет работать автоматически
Ответ №1:
похоже, что у выборки есть проблема… в любом случае я просто заменил библиотеку выборки на axios, и все работает отлично
вот что я сделал наhelper.js файл
// POST Request
export const post = (
url,
formData,
auth = false,
type = 'application/json',
providedToken = token,
) => {
return axios({
method: 'POST',
url: `${API_URL}/${url}`,
data: formData,
headers: {
'Content-Type': type,
Authorization: auth ? `Bearer ${providedToken}` : null,
},
})
.then((res) => {
console.log(res);
return res.data;
})
.catch((err) => console.log(err.data));
};