Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么$(this).data(';mycontrol';)未定义?_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript 为什么$(this).data(';mycontrol';)未定义?

Javascript 为什么$(this).data(';mycontrol';)未定义?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,不幸的是,我的前端技能不足,因为我的角色让我更多地使用服务器端/db技术,而不是css/js。无论如何,我都在努力实现这一点: 更具体地说,我可以在这里找到一个asp.net示例: 基本上允许您进行大规模图像上传。 我已经用正确的css和js文件设置了前端。我不得不修改一些js文件,以使用on()而不是live()作为。“我的表单”将加载,如下所示: 不过,到目前为止一切都很好,只要我“添加文件”或拖放文件,chrome developer tools就会告诉我以下几点: 未捕获类型错误:

不幸的是,我的前端技能不足,因为我的角色让我更多地使用服务器端/db技术,而不是css/js。无论如何,我都在努力实现这一点:

更具体地说,我可以在这里找到一个asp.net示例:

基本上允许您进行大规模图像上传。 我已经用正确的css和js文件设置了前端。我不得不修改一些js文件,以使用
on()
而不是
live()
作为。“我的表单”将加载,如下所示:

不过,到目前为止一切都很好,只要我“添加文件”或拖放文件,chrome developer tools就会告诉我以下几点:

未捕获类型错误:无法读取未定义的属性“\u adjustMaxNumberOfFiles”

它将文件指定为
jquery.fileupload ui.js
,并更具体地指出:

var that = $(this).data('fileupload');
that._adjustMaxNumberOfFiles(-data.files.length);
alert
ed
这一点
当然,它似乎没有定义……但我不知道足够的jquery来理解它为什么没有定义。我的fileupload div标记如下所示:

   <div id="fileupload">
                         <form action="/Handler.ashx" method="POST" enctype="multipart/form-data">
                            <div class="fileupload-buttonbar">
                                <label class="fileinput-button">
                                    <span>Add files...</span>
                                    <input id="file" type="file" name="files[]" multiple>
                                </label>
                                <button type="submit" class="start">Start upload</button>
                                <button type="reset" class="cancel">Cancel upload</button>
                                <button type="button" class="delete">Delete files</button>
                            </div>
                           </form>
                            <div class="fileupload-content">
                                <table class="files"></table>
                                <div class="fileupload-progressbar"></div>
                            </div>
                        </div>
我正在使用jquery 2.0.3和jquery ui 1.10.3

更新 我已经得出结论,我发布的示例链接(上面的第二个链接)唯一的区别是他们使用的jquery版本似乎是1.8.2,而我使用的是2.0.3。区别和问题在于这段代码:

var that=$(this).data('fileupload')

在下载示例中,这将返回一些奇怪的对象:

a.(匿名函数)。(匿名函数){element:e.fn.e.init[1],选项:Object,\u sequence:Object,\u total:0,\u loaded:0…}

在我的版本(使用2.0.3)中,我对此未定义:

var that=$(this).data('fileupload')


有没有其他方法可以在一行代码中完成此操作?

您如何初始化插件?问题可能是您的选择器。针对表单本身,而不是包装div

基于你的html

尝试更改:
$('#fileupload').fileupload({/*options*/})

至:
$('#文件上传表单')。文件上传({/*选项*/})


此外,您可能还需要将
.fileupload content
div移动到
表单
标记中。

在控制台窗口中反复播放之后,我得到了以下内容:

var that=$(“#fileupload”).data('blueinpui-fileupload')

因此,对于使用anything>jQuery 1.8的任何人,请更改此行:

var that=$(this).data('fileupload')

为此:


var that=$(“#fileupload”).data('blueinpui-fileupload')

“导致此未定义”-除非有什么东西定义了它,否则一切都是未定义的。为什么你认为应该定义它?我想我对jquery的了解还不够,不知道为什么它是未定义的。我假设$(this).data('fileupload')引用了我的上载控件,并且在其中删除了一个文件(或其中有多个文件)之后,会定义它吗?我可能离这里很远。您的结束表单标签在哪里?您可能会认为$(这)完全取决于调用它的上下文。可能是您打算:var that=$('#fileupload').data()也许这会对您有所帮助:请查看并下载此链接我所做的与此示例完全相同,唯一的区别是我有一个较新版本的jquery。我犯的错误是
var that=$(this.data('fileupload'))
未定义…看起来正是我想要的。(看起来大约有8个地方需要改变。)你能解释一下为什么这样做吗?看起来这返回的结果与旧版本使用
$(this.data('fileupload')
时的结果完全相同,但我不明白为什么。此外,上面的代码不会更改为
$(this.data('blueinpui-fileupload')
  _adjustMaxNumberOfFiles: function (operand) {
            if (typeof this.options.maxNumberOfFiles === 'number') {
                this.options.maxNumberOfFiles += operand;
                if (this.options.maxNumberOfFiles < 1) {
                    this._disableFileInputButton();
                } else {
                    this._enableFileInputButton();
                }
            }
        },