Загрузка файлов через плагин jquery.form - PullRequest
1 голос
/ 24 августа 2011

У меня есть следующий 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: Решение вышеработает!

1 Ответ

0 голосов
/ 08 мая 2014

Решение GitHub: бесконечный цикл с пустым вводом файла (включая патч)

Согласно malsup комментарий

Added proposed fix to v2.91.

Скачать jQuery.form.js версия 3.50

Проблема решена для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...