Jquery 使用金字塔处理ajax文件上传服务器端
我上传了一个Ajax文件,其中包含以下代码:Jquery 使用金字塔处理ajax文件上传服务器端,jquery,python,ajax,pyramid,Jquery,Python,Ajax,Pyramid,我上传了一个Ajax文件,其中包含以下代码: $('#photo-input:file').change(function() { var photo = this.files[0]; var caption = $('.photo-caption').val(); type = photo.type; if (photo.type != 'image/png' &am
$('#photo-input:file').change(function() {
var photo = this.files[0];
var caption = $('.photo-caption').val();
type = photo.type;
if (photo.type != 'image/png' && photo.type != 'image/jpg' && !photo.type != 'image/gif' && photo.type != 'image/jpeg' ) {
alert('Sorry, you may only upload png, jpg, jpeg, or gif images.');
return false;
}
$('.photo-post-submit').click(function () {
var formData = new FormData();
formData.append('photo', photo);
$.ajax({
url: '/post',
type: 'POST',
data: {'photo' : formData, 'caption' : caption},
cache: false,
contentType: false,
processData: false,
success: function () {
}
}, 'json');
});
});
但是当我调用request.POST['caption']
或request.POST['photo']
时,我得到了错误:
Not an HTML form submission (Content-Type: application/xml)
出什么问题了?要上传文件,请使用JQuery.upload插件。
有关更多详细信息,请查看。有关文件上载,请使用JQuery.upload插件。
有关更多详细信息,请检查。您似乎混淆了
$.post
和$.ajax
方法,因为您要传递一个单独的json
参数(该参数$.ajax
不接受为数据类型参数)
此外,您真的不应该将contentType
设置为false
,您正在将processData
设置为false
,这就造成了一个非常混乱的混合,即金字塔将与jQuery对该组合的任何处理有何关系
要将缓存
参数设置为假
后发到服务器,请使用:
$.ajax({
url: '/post',
type: 'POST',
data: {'photo' : formData, 'caption' : caption},
cache: false,
dataType: 'json',
success: function () {
}
});
请注意,
dataType
设置为json
,这意味着您的金字塔视图需要返回json,jQuery AJAX代码需要一个json响应。看起来您对$.post
和$.AJAX
方法感到困惑,因为您传递的是一个单独的json
参数(其中,$.ajax
不接受作为数据类型参数)
此外,您真的不应该将contentType
设置为false
,您正在将processData
设置为false
,这就造成了一个非常混乱的混合,即金字塔将与jQuery对该组合的任何处理有何关系
要将缓存
参数设置为假
后发到服务器,请使用:
$.ajax({
url: '/post',
type: 'POST',
data: {'photo' : formData, 'caption' : caption},
cache: false,
dataType: 'json',
success: function () {
}
});
请注意,
dataType
设置为json
,这意味着您的金字塔视图需要返回json,jQuery AJAX代码需要json响应。啊,我明白了。这立即解决了问题。谢谢!啊,我明白了。这立即解决了问题。谢谢!