Javascript 如何使用$.ajax()进行输入字段文本和文件上载?
这是我的密码Javascript 如何使用$.ajax()进行输入字段文本和文件上载?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,这是我的密码 $.ajax({ type: 'post', url: '../lib/upload.php', data: new FormData( $("#niceidentifier") ), processData: f
$.ajax({
type: 'post',
url: '../lib/upload.php',
data: new FormData( $("#niceidentifier") ),
processData: false,
contentType: false,
success: function (response) {
if(response == 'success') {
return true;
}
else {
alert(response);
console.log(response);
}
}
});
HTML表单只是包含了基本的HTML enctype和方法post,但不幸的是没有传递任何数据。如何上传文件并一次性传递输入数据?在同一个POST请求中传递文件和其他数据(如文本)并不是那么简单。实现这一点的唯一方法是发出多部分/表单数据请求 您可以使用FormData传递文件。和processData,contentType必须设置为false。因为您不打算在客户端处理文件
// Create a formdata object and add the files
var data = new FormData();
$.each(files, function(key, value)
{
data.append('myFile', value); //No I18N
});
$.ajax({
url: '/your-url',
type: 'POST',
data: data,
cache: false,
dataType: 'json', //No I18N
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function(data, textStatus, jqXHR)
{
// do something
},
error: function(jqXHR, textStatus, errorThrown)
{
// Handle errors here
}
});
或者,您可以发送包含以下数据的文件:
我使用ajaxForm通过ajax异步上传文件,这比尝试实现自己的文件要容易得多
对于跨浏览器解决方案,我认为最好使用
$("#form_id").ajaxSubmit();
@所以我必须为每个输入字段执行form_data.append?即使它不是一个文件?niceidentifier是表单的id吗?@SebriZouhaier不,这是表单的id,PHP脚本如何获取我的输入类型文本内容?@user3613095我对PHP不太熟悉,但我认为您可以使用$_FILES['myFile']['tmp\u name']访问它。您可以阅读它,我得到了文件,但我没有得到我表单中的20个文本、选择和单选字段。@user3613095您也需要附加这些值。喜欢数据。加上'name',一些值;这不能自动发生吗@克里耶塔?我的表单更复杂,它可以在字段类型之间变化。。。
$("#form_id").ajaxSubmit();