У меня есть форма, которая находится в модальном окне, как часть этой формы у меня есть загрузка файла.

Я изо всех сил пытаюсь найти способ загрузить в

 <g:form>

Через Ajax. Я знаю, что могу использовать uploadForm, но это обновляет страницу, чего я не хочу.

Я безуспешно пробовал все плагины Grails для загрузки файлов ajax.

Может ли кто-нибудь указать мне, как я могу это сделать.

Я так пробовал:

    <g:form action="save">

           <g:textField name="category" value=""/>

                  <g:uploadForm name="myUpload">
                         <input type="file" name="myFile" />
                  </g:uploadForm>

           <g:submitButton name="create"value="create" />


     </g:form>

     <g:javascript>
           $(document).ready(function() {
                 $('#myUpload').ajaxForm(function() {
                 alert("File upload finished!");
                 });
            });
     </g:javascript>

Предупреждение никогда не срабатывает. Я добавил соответствующие файлы JS.

1
Sagarmichael 23 Янв 2014 в 20:17

1 ответ

Лучший ответ

Вы можете оптимизировать форму загрузки с помощью плагина jquery ajax form.

Если вы хотите отправить все в своей форме за один раз через ajax, вы можете сделать что-то вроде этого:

<g:uploadForm name="myUpload" action="save">
    <g:textField name="category" value=""/>
    <input type="file" name="myFile" />
    <g:submitButton name="create"value="create" />
</g:uploadForm>

<script> 
    $(document).ready(function() { 
        $('#myUpload').ajaxForm(function() { 
            alert("File upload finished!"); 
        }); 
    }); 
</script> 
1
rcgeorge23 24 Янв 2014 в 15:46
1
Использование во всем мире упало до 10%. Где в вопросе говорится, что поддержка IE8 является обязательной?
 – 
rcgeorge23
24 Янв 2014 в 11:40
Мне просто было интересно, потому что у меня была такая же проблема, и мне нужно было поддерживать ie8.
 – 
emilan
24 Янв 2014 в 11:43
К сожалению, с IE8 вам нужно будет использовать скрытый iframe. Хорошее руководство есть здесь.
 – 
rcgeorge23
24 Янв 2014 в 12:14
Да, я делал это с помощью iframe.
 – 
emilan
24 Янв 2014 в 12:20
Это, похоже, не работает, поскольку оно должно быть частью существующей формы, насколько я знаю, у вас не может быть формы внутри формы. Я отредактирую свой исходный вопрос и добавлю еще код.
 – 
Sagarmichael
24 Янв 2014 в 14:53