У меня есть следующий HTML-документ для загрузки файла ajax:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.form.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload_form').ajaxForm({
success: function(data, textStatus, jqxhr) {
if (data.redirect)
window.location.replace(data.redirect);
else
alert(data.text);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("unexpected error: " + textStatus);
},
dataType: "json",
});
});
</script>
</head>
<body>
<form id="file_upload_form" action="http://apddr/pl/administration/test/" method="post" enctype="multipart/form-data">
<table class="grey" id="file_table">
<tr>
<th colspan="2">
Add file
</th>
</tr>
<tr>
<td style="vertical-align: top; width: 10em;" class="strong"><label for="id_file">File name:</label></td>
<td>
<input type="file" name="file" size="50" id="id_file" style="background-color: initial;"/><br />
</td>
</tr>
<tr>
<td class="strong">
<label for="id_language">Choose lang:</label>
</td>
<td>
<select id="id_language" name="language">
<option value="">-- no language --</option>
<option value="ANG">english</option>
<option value="NIE">german</option>
</select>
</td>
</tr>
<tr>
<td class="strong"><label for="id_description">Description:</label></td>
<td>
<input class="text" type="text" name="description" maxlength="300" id="id_description" style="width: 100%;"/><br />
</td>
</tr>
<tr>
<td class="strong"></td>
<td class="strong" style="text-align: right">
<input type="submit" class="submit" name="addFile" value="Send" />
</td>
</tr>
</table>
</form>
</body>
</html>
Вызов http://apddr/pl/administration/test/ возвращает application / json '{' text ':' test '}'.
Под предупреждением Chromium («неожиданная ошибка: + textStatus);строка вызывается с textStatus = 'aborted', что нежелательно, но Firefox загружает этот JSON.Кроме того, в консоли Firebug он мгновенно печатает:
[jquery.form] state = uninitialized
Что я делаю не так?Справка!
ОБНОВЛЕНИЕ:
ОК, похоже, что управление передачами осуществляется модулем django - filetransfers (на стороне сервера), поэтому, если я пытаюсь загрузить с помощью обработчика filetransfers (другойдействие ссылка) Работает - но только под Chromium.Firefox все еще вылетает
ОБНОВЛЕНИЕ2:
Похоже, что кто-то сталкивался с этой проблемой: http://crazytechthoughts.blogspot.com/2011/01/get-json-data-response-with-jquery-form.html
ОБНОВЛЕНИЕ3: Решение вышеработает!