Ajax 提交表单同时上传文件为什么报错?

一个表单,通过ajax提交,能正常插入数据,前端也能响应ajax返回的json数据弹出对应的提示框,现在加了一个选择文件的按钮,需要在提交表单的时候上传文件到服务器,并返回文件路径一起存入数据库,但是图片和表单数据都上传成功了,返回的 json 数据直接被输出了(相关报错见图片),前端没有响应 json 的值弹出提示框,调试了一天了,求大神指点...
file
file
下面是laravel的错误日志:
file

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

Ajax 上傳檔案要用 FormData
建議可以參考以下流程設計此表單:

  1. 先開一支 API 專門用來上傳檔案
  2. 圖片被選擇時,上傳至(1)API,並取得回傳檔案路徑
  3. 將路徑填回表單
  4. 送出表單時的 AJAX 就可以用 JSON 格式傳送了

這樣的作法邏輯上較清晰,且可在多個地方共用檔案上傳,不用將上傳邏輯分散在每個 Controller 中

6年前 评论
讨论数量: 4

能看看你 Ajax 提交的內容嗎
看起來是表單中的 story 沒有檔案

6年前 评论

@leochien
是的,$request->file('story')确实是空的,这是怎么回事呢?
file

6年前 评论

Ajax 上傳檔案要用 FormData
建議可以參考以下流程設計此表單:

  1. 先開一支 API 專門用來上傳檔案
  2. 圖片被選擇時,上傳至(1)API,並取得回傳檔案路徑
  3. 將路徑填回表單
  4. 送出表單時的 AJAX 就可以用 JSON 格式傳送了

這樣的作法邏輯上較清晰,且可在多個地方共用檔案上傳,不用將上傳邏輯分散在每個 Controller 中

6年前 评论

@leochien
终于搞定了,非常感谢~

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!