JQuery通过ajax发布文件和文本

时间:2012-07-03 19:22:57

标签: jquery django image

我有一个带有新闻功能的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.POSTrequest.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

此时,我很丢失。任何指针都会非常有用。

1 个答案:

答案 0 :(得分:0)

实际上不可能通过ajax发送文件 - 如果你使用jquery form plugin之类的东西来“劫持”你的表单,它会在幕后将其提交给iframe而不是使用XHR。

在任何情况下,您都应该以不使用javascript的方式编写表单,然后使用jquery表单来progressively enhance。那你甚至不需要担心这种事情。