получение запрошенных файлов в виде пустого массива в Laravel API из javascript

#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 при отправке

  API gives me back this empty object as a response
  

API возвращает ответ

Комментарии:

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));
};