jquery $ ('# myForm'). ajaxForm (функция () не вызывает document.ready () во второй раз

0

Я использую jquery, backbonejs и underscorejs для своего проекта. Я хочу загрузить изображение с помощью ajaxForm и document.ready(). На productImageView.js у меня есть

define(['jquery', 'underscore', 'backbone', 'text!templates/product/productImageTemplate.html'], function($, _, Backbone, productImageTemplate) {
var ProductImageView = Backbone.View.extend({
    el: $("#page"),
    initialize: function() {
        this.$el.off();
    },
    render: function() {
        $(function() {
            $('#myForm').ajaxForm(function() {
                alert("Image uploaded");
            });
        });
        this.$el.html(productImageTemplate);
    }
});
return ProductImageView;
});

На productImageTemplate.html есть

<form id="myForm" action="upload_image.php" method="post"> 
<input name="uploadfile" type="file" />
<input type="submit" id="uploadButton" value="Upload" /> 

В первый раз я загружаю изображение, все в порядке. Но когда во второй раз я посещаю страницу и загружаю, document.ready() не работает.

Заранее большое спасибо.

Ресурс: http://malsup.com/jquery/form/

Теги:
underscore.js
backbone.js

2 ответа

1
Лучший ответ

Поместите this.$el.html(productImageTemplate); перед ajaxForm.

Вам не нужно $(function() { здесь. Когда вы визуализируете представление, DOM должен быть уже готов. Если вы не уверены в этом - поместите свои скрипты прямо перед </body>.

  • 0
    Вуаля! Спасибо за спасение моей жизни. Да благословит тебя Бог.
0

попробуйте это для ajax в рендеринге:

$('#uploadButton').click(function(){
    $.post('process_file.php', $('#myForm').serialize());
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню