2013-02-09 84 views
2

我正在配置blueimp上传图片点击发布按钮。我的问题是它没有调用$('#fileupload').fileupload函数。我已经包含以下JavaScript文件。以下是我的代码,请看看有什么问题。

<head> 
    <script type="text/javascript" src="../../js/jquery.min.js"></script> 
    <script type="text/javascript" src="../../js/jquery-ui.js"></script> 
    <script type="text/javascript" src="../../js/jQuery-File-Upload-master/js/jquery.fileupload.js"></script> 
    <script type="text/javascript" src="../../js/jQuery-File-Upload-master/js/vendor/jquery.ui.widget.js"></script> 
    <script type="text/javascript" src="../../js/jQuery-File-Upload-master/js/jquery.iframe-transport.js"></script> 
    <script type="text/javascript"> 
     $('#fileupload').fileupload({ 
      dataType : 'json', 
      url : "ownmessages", 
      add: function (e, data) { 
       $('#post') .click(function() { 
        $('#post').text('Uploading...'); 
        data.submit(); 
       }); 
      }, 
      done: function (e, data) { 
       $('#post').text('Upload finished.'); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <s:form action="ownmessages" enctype="multipart/form-data" method="post"> 
     <s:textarea rows="2" cols="40" name="message" id="message1"></s:textarea><br> 
     <s:select name="msg_visibility" id="msg_visibility" list="#{'public':'Public', 'friends':'Friends','me':'Me only'}" value="public"/> 
     <input id="fileupload" type="file" name="user_post_image[]" data-url="ownmessages"/> 
     <input type="button" value="Post" id="post" /> 
    </s:form> 
</body> 

回答

4

在尝试并选择任何元素之前,您需要等待文档完成加载。 jQuery .ready()方法等待文档对象模型(DOM)完成加载并运行脚本。

$(document).ready(function() { 
    $('#fileupload').fileupload({ 
     dataType : 'json', 
     url : "ownmessages", 
     add: function (e, data) { 
      $('#post') .click(function() { 
       $('#post').text('Uploading...'); 
       data.submit(); 
      }); 
     }, 
     done: function (e, data) { 
      $('#post').text('Upload finished.'); 
     } 
    }); 
}); 

而不是使用.ready()你也可以只通过一个函数的jQuery。

$(function() { 
    // will run after DOM is loaded 
}); 
+2

对于'jQuery.ready'的缩短版本。你甚至可以通过使用ready回调中的第一个参数来创建'$'的本地版本:''jQuery(function($){/ * in this $ $ $ $ $ $ $ $ $ $'$'$');' – andlrc 2013-02-09 12:25:24

+1

我增加了$ (document).ready(function(){但它仍然不起作用 – 2013-02-09 13:27:01

0

第一个问题:


<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#fileupload').fileupload({ 
     dataType : 'json', 
     url : "ownmessages", 
     add: function (e, data) { 
      $('#post') .click(function() { 
       $('#post').text('Uploading...'); 
       data.submit(); 
      }); 
     }, 
     done: function (e, data) { 
      $('#post').text('Upload finished.'); 
     } 
    }); 
    }); 
</script> 

,这是一个开始,但可能还不够......

下一个优化的缘故,至少,移动你的脚本标记到底部

+0

它不工作 – 2013-02-09 13:27:29

+1

很好的意见笑 – mikakun 2013-02-09 13:42:36

+0

如何解决这个:) – 2013-02-10 07:07:20