我有两个JS文件,如下所示(page1.js)和(page2.js供参考,如下所示)。我在工作时基本上是指以下JSON响应:
{
"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
以下是我的page2.js
相关工作:
this.get = function (data_, done_, fail_, webServiceKey_) {
// Lookup the requested web service URL
var url = https://documentlookup.com:8443/getmydocuments;
// Create the AJAX request.
$_.ajax({
data: data_,
method: "GET",
url: url
})
.success(done_)
.error(fail_);
};
// If the JSON data was returned with content type of "text/plain", parse as JSON before returning.
this.convertResponse = function (data_, jqXHR_) {
return (typeof(data_) === "object" ? data_ : JSON.parse(data_));
};
当用户点击它时,基本上有一个jqxgrid中显示的行列表(上面的代码中没有提到)
调用$("#mydoclist").on('rowclick
,调用以下函数:
getMyDocumentContents
函数:此函数基本上传递了doc_id
内部数据变量
可用于以下功能:
processContent:
在这个函数中,我试图在jqxPanel中显示content
数组中my_document_list
的值。
我在这个功能中面临的问题:
可以看出,我将调试器放置在除了一个地方之外当前被评论的各个地方
就在这一行的下方loadComplete: function (records) {
但是,我不会在此行var dataAdapter = new $.jqx.dataAdapter(source, { ,
之上收到任何错误
我把它放在里面,我得到以下错误:
未捕获的TypeError:无法使用'in'运算符在jquery-1.11.1.js中搜索'length':583
其中length是一个数字,它根据上述JSON响应中content
的值的长度而不断变化。
谁能告诉我出了什么问题?提前致谢 !
如果需要,这里是jQuery行#583 isArraylike函数:
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
}
我应该尝试更改jQuery版本吗?
答案 0 :(得分:0)
在data_.my_document_list.length[0].content;
,我认为您需要data_.my_document_list[0].content;
。
my_document_list
是一个数组,因此应该在那里进行数组访问。