我必须以哪种格式将formData发送到PHP后端?

时间:2019-10-10 22:18:11

标签: php axios form-data

在我的Vue组件中,我使用axios.post将数据发送到我的PHP后端

 const formData = new FormData()
 const form_data = JSON.stringify( this.form_fields ).toString()
 formData.append( 'form_data', form_data )
 axios.post( url, formData )
        .then(response => 
        console.log(response))

form_data中的数据如下:

 [{"title": "any title", "content":"any content"}, {"title": "any title", "content":"any content"}]

在PHP中,字符串看起来像

  [{\"title\": \"any title\", \"content\":\"any content\"}, {\"title\": \"any title\", \"content\":\"any content\"}]

我用str_replace删除\“,然后我将字符串序列化以保存在后端。

不幸的是,如果我的文本包含换行符,则无法保存内容。

如何在不丢失任何内容的情况下将数据发送到php? html格式的信息也没有保存到我的数据库中。

字符串的外观如何?

3 个答案:

答案 0 :(得分:1)

JSON字符串看起来很好,不需要更改。请记住,HTML分行符<br/>在此步骤中不会转换为\n

问题出在PHP端,您将\替换为字符串str_replace,这很可能也会弄乱新行\n字符。

尝试在php中对JSON字符串进行适当的反序列化:

$decoded = json_decode($jsonString);

尝试从$decoded数组中获取值。 (他们应该没问题,还可以换行。)

参考:https://www.php.net/manual/en/function.json-decode.php

答案 1 :(得分:0)

代替这样做:

const formData = new FormData()
const form_data = JSON.stringify( this.form_fields ).toString()
formData.append( 'form_data', form_data )

相反,这样做:

var form = $("#formId")[0]; //Select your form with, say, id='formId'
var formData = new FormData(form);

要在PHP中获取POSTed值,可以遍历POST数组,也可以单独获取它们。例如:

$something = $_POST['formElementName']; //formElementName is the name attribute of the element in your form

答案 2 :(得分:0)

我有一个管理字符串的功能

 function get_serialized_string( $data ) {
     $post = str_replace( '\"', '"', $data );
     $post = str_replace('<p><br></p>', '', $post );
     $post = str_replace( '\n', '"', $post );
    return serialize( json_decode( ( $post ) ) );
 }

但是我仍然无法保存内容。

如果我的文本区域中包含一个链接,该链接的颜色为rgba(0,0,0,2.5),则它将返回null。

我的头文件中的axios数据

 [{\"name\":\"Stanley\",\"email\":\"stan@stan.de\",\"description\":\"<p>Lorem ipsum dolor sit amet, <span style=\\\"color: rgb(230, 0, 0);\\\">consetetur sadipscing elitr,</span> sed diam nonumy eirmod tempor invidunt ut labore et&nbsp;</p><p><br></p>\",\"website\":\"https://test.de\"}]

我该如何翻译.i的字符串:

 a:1:{i:0;O:8:"stdClass":4:{s:4:"name";s:7:"Stanley";s:5:"email";s:12:"stan@stan.de";s:11:"description";s:83:"<p>Lorem ipsum dolor sit amet, sed diam nonumy eirmod tempor invidunt ut labore</p>";s:7:"website";s:15:"https://test.de";}}

如果我不设置文本颜色的格式,它将起作用