我正在尝试将 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
。
- 1 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消