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 但不行
这⋯⋯能怎么解呢
asys0512 2.7k
8月1日提问
1 个回答
0

已采纳

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

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

撰写答案

推广链接