我創建了一個提交函數,用於抓取不同的數據以及圖像,如果用戶已經上傳並將圖像綁定到FormData
類型對象。這不是與其他數據一起發送到服務器上傳。我的問題是,我似乎無法將圖像與其他變量一起獲取到服務器。所有我在success
上得到一個空白的迴應。通過AJAX發送圖像的問題
下面是我在做什麼:
ElevationColorsForm.prototype.submit = function()
{
// DEFUALT SET FORMDATA TO FALSE
var formdata = false;
// MAKE SURE BROWSER SUPPORTS FORM DATA
if (window.FormData) {
formdata = new FormData();
}
/************ DATA IS SENT TO SERVER TO BE STORED ON SAVE CHANGES *****************/
var color_name = '';//<!-- CONTAIN NAME OF COLOR SET IN INPUT FIELD
var color_file = '';//<!-- CONTAIN THE IMAGE TO BE UPLOADED // MOVED OVER TO THE formdata
var color_type = [];//<!-- EITHER new_color OR current_color
color_name = $(".color-item-input").map(function()
{
return this.value
}).get().join(", ");
color_file = $(".color-item-file").each(function()
{
if(this.files.length > 0)
{
if (!!this.files[0].type.match(/image.*/)) {
var file = this.files[0];
var reader;
if (window.FileReader) {
reader = new FileReader();
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("images[]", file);
}
return file;
}
else
{
formdata.append("images[]", 'none');
return 'false';
}
}
else
{
formdata.append("images[]", 'none');
return 'false';
}
}).get();
$(".color-item").each(function()
{
if($(this).hasClass('current-color'))
{
color_type.push('current-color');
}
else if($(this).hasClass('new_color'))
{
color_type.push('new-color');
}
});
var RestrictionSelectActive = $(".restriction_active_ability option:selected").each(function()
{
return this.value
}).get();
var thisOne = this.Elevation.data.ifpe_id; // <!-- ELEVATION ID
$.ajax({
url: "actions/save_elevation_colors.php",
type: "post",
data:
{
'formData' : formdata,
'elevation_id' : thisOne
},
processData: false,
contentType: false,
success: function(data){
console.log(data);
$(".message_box").text("Changes made!");
$(".message_box").fadeIn();
setTimeout(function(){
$(".message_box").fadeOut();
$(".message_box").empty();
},2000);
},
error:function(){
alert("failure");
}
});
}
這裏是我的data
響應:{"status":"ok","code":1,"original_request":[]}
我的服務器端創建一個數組,並存儲所有的$_POST
的original_request
內,比json_encoding
檢索。
建議或想法?
WTH是'FileReader'應該在那裏做? – Bergi
@Bergi越看越越我真的不知道了。我可以解碼它並使用它發送它並用PHP重新編碼它嗎? –
沒有理由這麼做,'FormData'爲你做到這一點。而且我確定不支持'FormData'的瀏覽器也不支持'FileReader'。 – Bergi