为了账号安全,请及时绑定邮箱和手机立即绑定

在 AJAX 中将数据与 FormData 一起作为一个对象发送

在 AJAX 中将数据与 FormData 一起作为一个对象发送

PHP
SMILET 2022-06-17 16:31:21
我正在尝试将 JSON 数组中的 FormData 传递给 AJAX 脚本:    $('#form').submit(function(e)    {        e.preventDefault();        let formData = new FormData(this),            data = {'action': 'insert', 'data': formData};        $.ajax({            data: data,            url: '/wp-content/plugins/eng-dealer-map/bin/Admin.php',            type: 'post',            cache: false,            contentType: false,            processData: false,            success: function(res) {console.log(res)},            error: function(res) {console.log(res)}        })    });    然后 /bin/Admin.php    <?php        ini_set('display_errors',1);        ini_set('display_startup_errors',1);        error_reporting(-1);        $ds = DIRECTORY_SEPARATOR;        require_once $_SERVER['DOCUMENT_ROOT']. $ds. 'wp-content'. $ds. 'plugins'. $ds. 'eng-dealer-map'. $ds. 'vendor'. $ds. 'autoload.php';        var_dump($_POST);        $admin = new \App\Endpoint\Admin(['action' => $_POST['action'], 'data' => $_POST['data']]);        echo $admin->execute();    反过来,最终进入这个(缩小的)类:    <?php        namespace App\Endpoint;        class Admin        {            protected $db;            protected $table;            protected $sql;            protected $data;            public function __construct($foo)            {    不幸的是,它似乎$_POST在途中迷路了。在我的 JS 中添加这个:    for (let pair of formData.entries())    {        console.log(pair[0]+ ', ' + pair[1]);    }    它正确显示了我的数据。然后我var_dump($_POST)在bin/Admin.php其中显示了一个空数组。    我改为'data': formData所以'data': 'hello, world'我感觉 FormData 不喜欢与其他元素一起在 JSON 数组中?    那么如何将带有其他元素的 FormData 发送到我的 AJAX 脚本呢?我知道我可以使用:    formData.append('action', 'action-value')    但是当它可以作为一个对象发送到我的脚本时,感觉就像是一个额外的步骤。    我也尝试过使用JSON.stringifyonformData但又没有。有没有一种方法可以在不使用的情况下将 formData与其他数据一起作为一个对象发送.append()?还是这是我唯一的选择?
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

我有一种感觉 FormData 不喜欢与其他元素一起在 JSON 数组中?

正确的。您不能将 FormData 转换为 JSON。

那么如何将带有其他元素的 FormData 发送到我的 AJAX 脚本呢?

将额外的数据添加到 FormData。

我知道我可以使用:

formData.append('action', 'action-value')

是的,这样做。

但是当它可以作为一个对象发送到我的脚本时,感觉就像是一个额外的步骤。

FormData对象一个对象。您只需将数据添加到其中,而不是将数据添加到不同的对象,然后尝试从中添加数据FormData


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号