У меня возникли проблемы с отправкой формы (Django-form) с полем изображения с JQuery/ajax POST. Im возвращающ «ошибки поля» ошибки изображения на поле изображения.Отправить форму (django-form) с Imagefield через JQuery/Ajax Post?
Я пробовал различные решения с добавлением formData но без результатов до сих пор. Я на правильном пути? Пожалуйста, укажите мне в правильном направлении. Спасибо!
Обновление: Я могу установить ImageField к необходимости = ложь, а не получить ошибку проверки, но я хочу, чтобы поле требуется, и кажется, что форма еще не представляет изображение ..
Основной функция выглядит следующим образом:
$(function() {
$('#imageupload').on('click', function() {
$('#dialog-modal').load('upload/ #myform');
$('#dialog-modal').dialog({
height: 550,
width: 280,
modal: true,
buttons: {
Send: function() {
var dialog = $(this),
form = $('#myform'),
data = form.serialize();
$('.off').remove();
$.ajax({
url: 'upload/',
data: data,
type: 'post',
success: function(response) {
res = $.parseJSON(response);
if (res['status'] == 'OK') {
alert('Thank you!');
dialog.dialog('close');
}
else if (res['status'] == 'bad') {
alert('Please try again!');
delete res['status']
var errors = res;
$.each(errors, function(key, value) {
var err = $('<span></span>', {
'class': 'off',
'text': value
}),
br = $('<br></br>', {
'class': 'off',
}),
input = $('#id_'+key).parent();
br.appendTo(input);
err.appendTo(input);
err.css('color', 'red').css('font-size', '10px');
});
}
}
});
}
}
});
});
})
форма выглядит так, что она находится в детской HTML Wich загружается в окне JQuery диалоговое/модальный:
<form method="post" id='myform' enctype="multipart/form-data">
{% csrf_token %}
<h1> Upload </h1>
<p><label for="name">Name:</label></p>
<div class="fieldWrapper">
{{ form.name }}
</div>
<br>
<p><label for="type">Type:</label></p>
<div class="fieldWrapper">
{{ form.type }}
</div>
<br>
<p><label for="description">Description:</label></p>
<div class="fieldWrapper">
{{ form.description }}
</div>
<br>
<p><label for="picture">Picture:</label></p>
<div class="fieldWrapper">
{{ form.picture }}
</div>
</form>
Да, на самом деле, кажется, что загрузка файлов через ajax не поддерживается. Есть несколько [плагинов] (http://www.phpletter.com/Demo/AjaxFileUpload-Demo/) и [примеры] (http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with -ajax /), которые показывают, как обойти это ограничение. Попытайтесь понять, как их использовать. Если вы не найдете решения, я выясню это, когда найду время – yuvi
Хорошо.Да, я видел, как некоторые говорят об этом, но также и многие люди, которые утверждают, что это возможно (что было немного запутанным). Одним из способов должно быть что-то, называемое formData, которое я пытался с последними днями без каких-либо хороших результатов. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest#Submitting_forms_and_uploading_files Но я попробую подробнее о подключаемых модулях и посмотрю ! – user3199840
Мне оказалось проще, чем я думал, используя плагин malsup. – yuvi