jquery $('#myForm')。ajaxForm(function()第二次不触发document.ready()

时间:2013-12-16 07:33:21

标签: jquery backbone.js underscore.js

我正在为我的项目使用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/

2 个答案:

答案 0 :(得分:1)

this.$el.html(productImageTemplate);放在ajaxForm之前。

此处您不需要$(function() {。渲染视图时DOM应该已经准备好了。如果您对此不确定 - 请将脚本放在</body>之前。

答案 1 :(得分:0)

尝试使用渲染中的ajax:

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