我实现了一个像http://abandon.ie/notebook/simple-file-uploads-using-jquery-ajax中描述的ajax文件上传。一切都适用于所有浏览器,但iOS上的Safari。作为响应,我收到内部服务器错误。
我检查了我的服务器端代码,但没有错。如果我在服务器端PHP脚本的第一行代码中写了一个die();
,我甚至会得到错误。似乎Safari错误地上传了图片。也许有人可以帮我修复这个bug。提前谢谢!
这是HTML代码:
<input type="file" id="pict" accept="image/*">
<input type="text" id="field1">
<input type="text" id="field2">
<button id="send">Send</button>
这就是Javascript:
var files = false;
$('#pic').on('change', prepareUpload);
function prepareUpload(event)
{
files = event.target.files;
}
$("body").on("click", "#send", function() {
uploadTB();
});
function uploadTB() {
var postdata = new FormData();
if (files !== false){
$.each(files, function(key, value)
{
postdata.append(key, value);
});
}
postdata.append("field1", $("#field1").val());
postdata.append("field2", $("#field2").val());
$.ajax({
url: 'http://example.org/index.php',
type: 'POST',
data: postdata,
cache: false,
processData: false,
contentType: false,
success: function(data)
{
console.log("sucess");
},
error: function(jqXHR, textStatus, errorThrown)
{
console.log(jqXHR,textStatus,errorThrown);
}
});
}
答案 0 :(得分:0)
更新代码
var files = false;
$('#pic').on('change', prepareUpload);
function prepareUpload(event)
{
files = event.target.files;
}
$("body").on("click", "#send", function() {
uploadTB();
});
function uploadTB() {
var postdata = new FormData();
if (files !== false){
$.each(files, function(key, value)
{
postdata.append(key, value);
});
}
postdata.append("field1", $("#field1").val());
postdata.append("field2", $("#field2").val());
$.ajax({
url: 'http://example.org/index.php',
type: 'POST',
data: formData,
mimeType:"multipart/form-data",
contentType: false,
cache: false,
processData:false,
success: function(data)
{
console.log("sucess");
},
error: function(jqXHR, textStatus, errorThrown)
{
console.log(jqXHR,textStatus,errorThrown);
}
});
}
答案 1 :(得分:0)
这似乎是iOS 8中的一个主要错误。请参阅:https://github.com/Widen/fine-uploader/issues/1284 我现在可以借用iOS 7和iPad了,它有效。谢谢大家的帮助!