Javascript 未捕获类型错误:无法使用‘;在’;操作员搜索‘;长度’;在jquery-1.11.1.js:583中
我有两个JS文件,如下所示(page1.JS)和(page2.JS供参考,如下所示)。我在工作时基本上是指以下JSON响应:Javascript 未捕获类型错误:无法使用‘;在’;操作员搜索‘;长度’;在jquery-1.11.1.js:583中,javascript,jquery,Javascript,Jquery,我有两个JS文件,如下所示(page1.JS)和(page2.JS供参考,如下所示)。我在工作时基本上是指以下JSON响应: { "webservice_status": { "status": "SUCCESS", "message": "" }, "my_document_list": [{ "doc1": "445", "doc2": "445", "doc3
{
"webservice_status": {
"status": "SUCCESS",
"message": ""
},
"my_document_list": [{
"doc1": "445",
"doc2": "445",
"doc3": "445",
"doc4": "445",
"content": "Some text here to display"
}
]
}
以下是我的page1.js
相关工作:
$("#mydoclist").on('rowclick', function (event) {
row = event.args.rowindex;
datarow = $("#mydoclist").jqxGrid('getrowdata', row);
var response = JSON.stringify(datarow, null, 10);
var docID = datarow["doc_id"];
self.getMyDocumentContents(docID);
});
this.getMyDocumentContents = function (contentID_) {
var data = {
doc_id: contentID_
}
app_.get(data, self.processContent, app_.processError, url_name);
}// End of getMyDocumentContents
this.processContent = function(data_,textStatus_,jqXHR_) {
data_ = app_.convertResponse(data_,jqXHR_);
console.log("Checking for actual data_ content:", data_);
console.log("Actual Data Length Check for data_ content:", data_.my_document_list.length);
// debugger;
var collection = data_.my_document_list.length[0].content;
console.log("Collection Check",collection);
//debugger;
var source = {
localdata: collection,
datafields: [{
name: 'content',
type: 'string'
}],
datatype: "array"
};
var dataAdapter = new $.jqx.dataAdapter(source, {
loadComplete: function (records) {
debugger;
var html;
//Get data
var records = dataAdapter.records;
console.log("Check for records:",records.length);
var length = records.length;
html = "<div style='margin: 10px;'><pre>" + records[0].content + "</pre></div>";
$("#docContentPanel").jqxPanel('clearcontent');
$("#docContentPanel").jqxPanel('append',html);
},
loadError: function (xhr, status, error) { },
beforeLoadComplete: function (records) {
}
});
// perform data binding
dataAdapter.dataBind();
var panel = $("#docContentPanel");
var content = panel.html();
panel.jqxPanel({ width: '750', height: '500', scrollBarSize: 20 });
}// End of processContent
function isArraylike( obj ) {
var length = obj.length,
type = jQuery.type( obj );
if ( type === "function" || jQuery.isWindow( obj ) ) {
return false;
}
if ( obj.nodeType === 1 && length ) {
return true;
}
return type === "array" || length === 0 ||
typeof length === "number" && length > 0 && ( length - 1 ) in obj; // THIS is LINE 583 which throws error
}
基本上,当用户单击jqxgrid时,它会在jqxgrid(上面的代码中没有提到)中显示一个行列表
$(“#mydoclist”)。在('rowclick
上调用,调用以下函数:
getMyDocumentContents
函数:此函数基本上传递生成的doc\u id
内部数据变量
可用于以下功能:
processContent:
在这个函数中,我试图在jqxPanel中显示我的文档列表
数组中的内容
的值
我在该函数中面临的问题:
可以看到,我在不同的地方放置了调试器,除了一个地方之外,其他地方都有注释
就在这一行的下方loadComplete:function(records){
在这一行上面我没有得到任何错误var-dataAdapter=new$.jqx.dataAdapter(source,{,
),但是,只要
我把它放在里面,我得到以下错误:
未捕获的TypeError:无法使用'in'运算符在jquery-1.11.1.js:583中搜索'length'
其中,length是一个数字,它根据上述JSON响应中content
值的长度不断变化。
谁能告诉我出了什么问题吗?提前谢谢!
为了以防万一,以下是jQuery行#583 isArraylike函数:
我是否应该尝试更改jQuery版本?在
数据\我的文档\列表。长度[0]。内容;
我想您需要数据\我的文档\列表[0]。内容;
my_document_list
是一个数组,因此数组访问应该发生在那里。谢谢。我做了你提到的事情,它仍然是一样的。我想我在我的帖子中提到了错误的一行。实际测试只涉及这一行var collection=data_。my_document_list[0].content;
谢谢您的时间。非常感谢。我可以通过修改此行'var collection=data.my\u document\u list.length[0]来修复此错误。content;`to`var collection=data.my\u document\u list.length`
function isArraylike( obj ) {
var length = obj.length,
type = jQuery.type( obj );
if ( type === "function" || jQuery.isWindow( obj ) ) {
return false;
}
if ( obj.nodeType === 1 && length ) {
return true;
}
return type === "array" || length === 0 ||
typeof length === "number" && length > 0 && ( length - 1 ) in obj; // THIS is LINE 583 which throws error
}