我有一个带有新闻功能的Django webapp。新闻源有与其相关的标题,正文和图像。用户可以编辑和更新他们的新闻源,包括添加新图像。
目前,我正在获取每个Feed项的所有数据,如下所示:
var newsfeeds = [];
$('.feed').each( function (index, element) {
var feed_dict = {'title': $(this).children('#title').val(),
'id': $(this).children('#feed_' + index + '_id').val(),
'should_delete': $(this).children('#should_delete').val(),
'subtitle': $(this).children('#subtitle').val(),
'body': $(this).children('#body').val()};
newsfeeds.push(feed_dict);
});
然后使用$.ajax()
发送。这很有效。
现在我正在研究图像。每个Feed都有一个具有唯一ID的关联<input type="/>
,因此我应该能够获取每个文件。接下来的问题是如何以这样的方式发送它们,即我可以在Django的request.POST
和request.FILES
中获取所有数据。我尝试在JS中使用FormData
对象:
var data = new FormData();
$('.image_input').each(function(index, element) {
data.append('file_' + index, element.files);
});
但这在Firebug中给了我一个NS_ERROR_CANNOT_CONVERT_DATA
。
此时,我很丢失。任何指针都会非常有用。
答案 0 :(得分:0)
实际上不可能通过ajax发送文件 - 如果你使用jquery form plugin之类的东西来“劫持”你的表单,它会在幕后将其提交给iframe而不是使用XHR。
在任何情况下,您都应该以不使用javascript的方式编写表单,然后使用jquery表单来progressively enhance。那你甚至不需要担心这种事情。