ajax 用 append 丢 json 给后端?

我有一个文章功能
一个表单中是用以下去给 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 但不行
这⋯⋯能怎么解呢
阅读 2.1k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题