gpt4 book ai didi

php - Ajax:发送 formData 以及自定义变量

转载 作者:行者123 更新时间:2023-12-01 07:11:39 29 4
gpt4 key购买 nike

我正在尝试使用ajax上传图片。

如果我这样做的话,这会起作用:

    $("#adv_cover").change(function(e){

e.preventDefault();

var formData = new FormData($('#adv_form_cover')[0]);

$.ajax({
type: 'POST',
url: 'edit.php',
data: formData,
processData: false,
contentType: false,
success: function(response) {}
});
});

然后在 PHP 中我得到这样的数据:

if($_FILES["adv_cover"]["name"]) {}

好的。

但是现在,我也需要发送一个 ID,所以根据我在这里发现的一些案例,我是这样做的:

    $("#adv_cover").change(function(e){

e.preventDefault();

var formData = new FormData();
formData.append('id', '1300');
formData.append('adv_cover', $('#adv_form_cover')[0]);

$.ajax({
type: 'POST',
url: 'edit.php',
data: formData,
processData: false,
contentType: false,
success: function(response) {}
});
});

然后在 PHP 中我尝试获取如下数据:

$id=$_POST['id'];
if($_FILES["adv_cover"]["name"]) {}

但我现在什么也没得到。

我还尝试对 formData['id'] 和 formData['adv_cover'] 进行 console.log,但没有成功,因此看来问题至少出在 javascript 方面。

请注意,我也尝试了这两种方法:

formData.append('adv_cover', $('#adv_form_cover')[0]);

formData.append('adv_cover[]', $('#adv_form_cover')[0]);

感谢您的帮助

最佳答案

看起来,虽然 new FormData() 调用接受 HTML Form 元素,但 .append() 方法不接受:

append

value
   The field's value. Can be a Blob, File, or a string, if neither, the value is converted to a string.

(取自 https://developer.mozilla.org/en-US/docs/Web/API/FormData )

因此,为了发送文件(当使用追加方法时),您需要获取 File对象,或 Blob对于该文件。我目前没有可用于测试的设置,但您可以使用以下方法访问文件对象:

$('#adv_form_cover').get(0).files[0]

或者不使用 jQuery:

document.getElementById('adv_form_cover').files[0]

因此,也许可以尝试使用您喜欢的任何一个作为附加值,使用以下版本:

void append(DOMString name, File value, optional DOMString filename);


更新

嗯,奇怪...是的,这就是我的意思:

formData.append('adv_cover', $('#adv_form_cover').get(0).files[0], 'filename');

尽管要工作,它肯定需要在输入中选择一个文件。如果您记录 myfileconsole.log() 会说什么?

您可以尝试的另一件事是合并两种方法,基本上您使用第一个示例创建表单:

var formData = new FormData($('#adv_form_cover')[0]);

然后附加额外的数据,如下所示:

formData.append('id', '1300');

这可能有效,并且取自本页底部:

https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects

关于php - Ajax:发送 formData 以及自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838800/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com