ajax 用 append 丢 json 给后端?

发布于 2022-09-11 21:29:50 字数 1020 浏览 21 评论 0

我有一个文章功能
一个表单中是用以下去给 ajax

formData = new FormData($('#form')[0]);

ajax

type: "POST",
    url: "url",
    data: formData,
    enctype: "multipart/form-data",
    cache: false,
    contentType: false,
    processData: false,
    ```
用这样的方式丢到后端去(PHP)
表单中有 file 照片上传跟一般 input
只是我找了一个编辑器
他 output 的格式是 json 像这样

{
   "time":1564653497717,
   "blocks":[
      {
         "type":"paragraph",
         "data":{
            "text":"serhsrehehserhesh"
         }
      }
   ],
   "version":"2.15.0"
}

于是就有一个问题
我如何将这个 json 丢到后端去?
我的做法是

formData.append('outputData', JSON.stringify(outputData));

后端接收

foreach (json_decode($_POST['outputData'], true) as $key) {
    echo $key['time'];
}

但会出现 `Invalid argument supplied for foreach()` 错误,`$_POST['outputData']` 在 foreach 抓不到值,等于是没过去后端⋯⋯
把 json string 丢到 formData 其中一个 field 但不行
这⋯⋯能怎么解呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欢烬 2022-09-18 21:29:50

后端给你的返回的json ,如果没有指明 Content-Type 为 application/json ,那么就会被 js 作为 普通字符串来解释,这时候就是一个普通字符串,不再需要 JSON.stringify ,你可以先打印看一下 outputData 是字符串还是对象。

后端收到 outputData 应该先打印检查校验其内容,而不是直接交给 foreach

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文