如果主页中包含js,则文件上载的未定义错误

时间:2017-08-18 10:10:53

标签: javascript php jquery ajax jquery-file-upload

我在我的网页上使用了blueimp jquery fileupload。我在主页的head标签中包含了所有css和js文件。我有一个包含许多菜单的左侧菜单。点击 menu1 后,它将发送一个ajax请求,响应将在div menuContent 中设置。

<head>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="file_upload_style.css">
<link rel="stylesheet" href="jquery_file_upload.css">
<script src="jquery_ui_widget.js"></script>
<script src="jquery_iframe_transport.js"></script>
<script src="jquery_file_upload.js"></script>
</head>
<div id="menuContent" class="menuContent"></div>

响应包含带有相应jquery文件上载代码的上传按钮。

<span class="btn btn-success fileinput-button w3-margin-bottom  ">
    <i class="glyphicon glyphicon-plus"></i>
    <span>Upload</span>
    <input id="uploadXLSXFile" type="file" name="files">
</span>
<script type="text/javascript">
$(function () {
    'use strict';   
    $('#uploadXLSXFile').fileupload({
        add: function(e, data) {
            var uploadErrors = [];
            if (!(/\.(xlsx)$/i).test(data.originalFiles[0].name)) {
                return false;
            }
            data.submit();
        },
        url: "UploadHandler.php", 
        dataType: 'json',
        acceptFileTypes : /(\.|\/)(xlsx)$/i,
        done: function (e, data) {

        }
    }).prop('disabled', !$.support.fileInput)
        .parent().addClass($.support.fileInput ? undefined : 'disabled');   
});

</script>

当我点击menu1时,此响应将被设置为div,但我收到错误,如

  

未捕获的TypeError:$(...)。fileupload不是函数

如何在ajax响应中访问主页中添加的js?任何人都可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

将脚本附加到标题中:

var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://somedomain.com/somescript";
$("head").append(s);

或者您可以使用JQuery的getScript()

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
  console.log( data ); // Data returned
  console.log( textStatus ); // Success
  console.log( jqxhr.status ); // 200
  console.log( "Load was performed." );
});