Javascript Ajax在同一请求中发送数组和图像
我想进行一个ajax调用,将JSON和文件数据发送到我的PHP后端。这是我当前的ajax调用:Javascript Ajax在同一请求中发送数组和图像,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我想进行一个ajax调用,将JSON和文件数据发送到我的PHP后端。这是我当前的ajax调用: $.ajax({ type: 'POST', dataType: 'json', data: jsonData, url: 'xxx.php', cache: false, success: function(data) { //removed for example } }); datajsonData是一个JSON
$.ajax({
type: 'POST',
dataType: 'json',
data: jsonData,
url: 'xxx.php',
cache: false,
success: function(data) {
//removed for example
}
});
datajsonData是一个JSON数组,它也保存来自文件选择的输入。我假设这是错误的,因为类型不匹配。我尝试使用contentType:false和processData:false,但当我尝试在PHP中访问$\u POST数据时,什么都没有。我传递的数据不是来自表单,而且有很多表单,所以我不想使用FormData并将其附加到该对象。我希望我不必通过两次ajax调用来实现这一点。如果您想随任何文件发送数据,则可以使用object 按如下方式发送您的jsonData: 在PHP中,您可以通过以下方式检查数据和文件:
若要随任何文件一起发送数据,则可以使用对象 按如下方式发送您的jsonData: 在PHP中,您可以通过以下方式检查数据和文件: 尝试使用而不是普通的序列化json 下面是一个例子:
var formData = new FormData();
formData.append("KEY", "VALUE");
formData.append("file", document.getElementById("fileinputID").files[0]);
然后在您的ajax中
$.ajax({
type: 'POST',
url: "YOUR URL",
data: formData,
contentType: false,
processData: false,
dataType: 'json',
success: function (response) {
CallBack(response, ExtraData);
},
error: function () {
alert("Error Posting Data");
}
});
尝试使用而不是普通的序列化json
下面是一个例子:
var formData = new FormData();
formData.append("KEY", "VALUE");
formData.append("file", document.getElementById("fileinputID").files[0]);
然后在您的ajax中
$.ajax({
type: 'POST',
url: "YOUR URL",
data: formData,
contentType: false,
processData: false,
dataType: 'json',
success: function (response) {
CallBack(response, ExtraData);
},
error: function () {
alert("Error Posting Data");
}
});
你也可以这样试试 您也可以访问此答案 HTML JS
你也可以这样试试 您也可以访问此答案 HTML JS
这有用吗?var jsonData=new FormDatadocument.getelementbyidiourformid;您可以使用FormData获取输入和文件现在您没有有效的解决方案,请尝试itI没有@devpro表单,但我将尝试将当前数据附加到FormData对象是的,只需将数据附加到FormData中这有帮助吗?var jsonData=new FormDatadocument.getelementbyidiourformid;你可以使用FormData获取输入和文件现在你没有什么有效的解决方案,试试itI没有@devpro表单,但我会尝试将我的当前数据附加到FormData对象是的,只需将数据附加到FormData中。如果我的值之一也是JSON对象,这会起作用吗?不,你会将它们作为普通的POST表单获取,您可以执行print\r$\u POST来检查值。另一方面,可以使用FormData添加Json。例如:formData.appendJSON,您的_JSON_OBJ;如果我的其中一个值也是JSON对象,这会起作用吗?不,您将以正常的POST形式获取它们,您可以执行print\u r$\u POST来检查这些值。另一方面,可以使用FormData添加Json。例如:formData.appendJSON,您的_JSON_OBJ;
<input id="fuDocument" type="file" accept="image/*" multiple="multiple" />
var fd = new FormData();
var files = $("#fuDocument").get(0).files; // this is my file input in which We can select multiple files.
fd.append("kay", "value"); //As the same way you can append more fields
for (var i = 0; i < files.length; i++) {
fd.append("UploadedImage" + i, files[i]);
}
$.ajax({
type: "POST",
url: 'Url',
contentType: false,
processData: false,
data: fd,
success: function (e) {
alert("success");
}
})