Javascript 如何使用FormData将输入值传递给ajax?
我正在尝试使用ajax和php上传图像,我已经成功地使其工作到一定程度,但我无法将输入的值(ID)传递到我的php文件 这是我的设想 形式 PHP 如何将Javascript 如何使用FormData将输入值传递给ajax?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试使用ajax和php上传图像,我已经成功地使其工作到一定程度,但我无法将输入的值(ID)传递到我的php文件 这是我的设想 形式 PHP 如何将$row['thing\u id']传递给$get\u id变量?我可以在成功时使用另一个GET ajax调用传递它,但是随后我丢失了image_id值(我使用foreach,因为我可能上载多个文件),因此我希望在同一个php文件中处理它 我没有包括我的上传脚本,因为它可以工作,除非我尝试使用thing_id制作一些东西 在ajax代码中传递数
$row['thing\u id']
传递给$get\u id
变量?我可以在成功时使用另一个GET ajax调用传递它,但是随后我丢失了image_id值(我使用foreach,因为我可能上载多个文件),因此我希望在同一个php文件中处理它
我没有包括我的上传脚本,因为它可以工作,除非我尝试使用thing_id制作一些东西
在ajax代码中传递数据属性
然后您可以访问php文件中的upId,因为我已经进行了更新,这样您也可以将upload file字段值发送到php文件。更改id,使其与字段匹配,然后可以使用
$get_id=$\u POST['upId']
$image=$_POST['images']
您有两种方法: One:
value=”“
应该是您的表单#myform的值/id
两个:
你可以按Harigovind说的方式传递“东西id”
希望有帮助 您有许多选项,例如添加隐藏的输入标记 使用
name=“uploadimages”
和一些所需的值
或
将
name=“uploadimages”
添加到按钮可能会起作用,我不确定您现在有两个数据属性(向下看):@Harigovind R当我从底部删除数据时:表单,我得到了未定义的index:thing\u id和未定义的index:images错误。@salp这是因为一旦您从数据中删除表单,您就不会将images字段传递给php。@salp如果您也传递images字段的值,而不是传递整个表单,则会出现此错误。但我不使用表单,只使用一个按钮。有解决方法吗?为什么不添加一个具有该值的隐藏输入字段并在php中接收它呢<代码>
<form enctype="multipart/form-data" id="myform">
<input type="file" name="images[]" multiple id="image"/>
</form>
<button type="button" id="uploadimages" name="thing_id"
value="<?php echo $row['thing_id']; ?>" class="btn btn-primary">Save changes
</button>
$("#uploadimages").click(function () {
var form = new FormData($('#myform')[0]);
// Make the ajax call
$.ajax({
url: 'uploadimages.php',
type: 'POST',
xhr: function () {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', progress, false);
}
return myXhr;
},
//add beforesend handler to validate or something
//beforeSend: functionname,
success: function (res) {
$('#content_here_please').html(res);
/**/
},
//add error handler for when a error occurs if you want!
//error: errorfunction,
data: form,
cache: false,
contentType: false,
processData: false
});
});
$get_id = $_POST['']; // This is where I stuck.
$.ajax({
url: 'uploadimages.php',
type: 'POST',
data:{upId:$("#uploadimages").val(),images:$('#uploadFieldId').val()},
xhr: function () {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', progress, false);
}
return myXhr;
},
//add beforesend handler to validate or something
//beforeSend: functionname,
success: function (res) {
$('#content_here_please').html(res);
/**/
},
//add error handler for when a error occurs if you want!
//error: errorfunction,
cache: false,
contentType: false,
processData: false
});