3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用FormData通過(guò)POST請(qǐng)求提交數(shù)據(jù)。這是一個(gè)簡(jiǎn)單的示例:
var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
processData: false, // important
contentType: false, // important
dataType : 'json',
data: myFormData
});
只要知道請(qǐng)求設(shè)置(例如url,方法和參數(shù)數(shù)據(jù)),就不必使用表單來(lái)發(fā)出ajax請(qǐng)求。

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
此處的所有答案仍在使用FormData API。就像"multipart/form-data"沒(méi)有表格的上傳一樣。您還可以使用以下命令將文件作為內(nèi)容直接上傳到POST請(qǐng)求的正文中xmlHttpRequest:
var xmlHttpRequest = new XMLHttpRequest();
var file = ...file handle...
var fileName = ...file name...
var target = ...target...
var mimeType = ...mime type...
xmlHttpRequest.open('POST', target, true);
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
xmlHttpRequest.send(file);
Content-Type和Content-Disposition標(biāo)頭用于解釋我們要發(fā)送的內(nèi)容(MIME類(lèi)型和文件名)。
我也在這里發(fā)布了類(lèi)似的答案。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
基于本教程,這里有一個(gè)非?;镜姆椒ǎ?/p>
$('your_trigger_element_selector').on('click', function(){
var data = new FormData();
data.append('input_file_name', $('your_file_input_selector').prop('files')[0]);
// append other variables to data if you want: data.append('field_name_x', field_value_x);
$.ajax({
type: 'POST',
processData: false, // important
contentType: false, // important
data: data,
url: your_ajax_path,
dataType : 'json',
// in PHP you can call and process file in the same way as if it was submitted from a form:
// $_FILES['input_file_name']
success: function(jsonData){
...
}
...
});
});
不要忘記添加適當(dāng)?shù)腻e(cuò)誤處理
添加回答
舉報(bào)