1

我在这里有这段代码,可以对我的 web 应用程序进行 ajaxizes。

$.get(State.url, function(data) {
            console.log($(data).find('#main-content').text());
            $('#main-content').html($(data).find('#main-content').html());
        },"html");

在某些时候,用户应该上传一个文件,但由于它是 ajaxified,它只会加载传入响应的父容器,即这个。

         <form enctype="multipart/form-data" class="contact_form" action="doUploadAudio">
        <input type="file" name="file" value="" id="file"/>
        <script>
            console.log("HEHE");
                $('#fileupload').fileupload({
                    replaceFileInput:false,
                    done: function (e, data) {
                        alert("DONE");
                        $('#main-content').html('');
                        $('#main-content').html($(data.result).find('#main-content').html());
                    }
                });

             </script>  
              <button class="btn" id="uploadAudio" type="submit" class="submit" data-loading-text="Uploading...">Upload</button>
          </form>

如您所见,我的表单没有执行它的脚本标签,无论如何我可以执行它吗?

请注意,我目前使用的是 jQuery 1.8.3

4

1 回答 1

1

首先,我fileupload在您的 HTML 中没有看到任何带有 id 的元素?

无论如何,您应该避免加载包含<script>标签的 HTML,因为加载的 JavaScript 的行为是不可预测的。

首先,您应该将您的 HTML 分开并单独加载:

<form enctype="multipart/form-data" class="contact_form" action="doUploadAudio">
    <input type="file" name="file" value="" id="file"/>
    <button class="btn" id="uploadAudio" type="submit" class="submit" data-loading-text="Uploading...">Upload</button>
</form>

然后您可以在成功回调中执行 JavaScript $.get

$.get(State.url, function(data) {
            console.log($(data).find('#main-content').text());
            $('#main-content').html($(data).find('#main-content').html());
            $('#fileupload').fileupload({
                replaceFileInput:false,
                done: function (e, data) {
                        alert("DONE");
                        $('#main-content').html('');
                        $('#main-content').html($(data.result).find('#main-content').html());
                    }
            });
 },"html");

或者将 JavaScript 片段(不带<script>标签)放在服务器上的 JS 文件中(例如 fileupload.js),然后像这样调用它:

$.get(State.url, function(data) {
            console.log($(data).find('#main-content').text());
            $('#main-content').html($(data).find('#main-content').html());
            $.getScript("<url to fileupload.js>", function() {
                        console.log("Fileupload should now be working");
            });
},"html");
于 2013-02-08T14:48:53.647 回答