未捕获的TypeError:无法使用'in'运算符在jquery-1.11.1.js中搜索'length':583

时间:2017-04-05 21:02:40

标签: javascript jquery

我有两个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版本吗?

1 个答案:

答案 0 :(得分:0)

data_.my_document_list.length[0].content;,我认为您需要data_.my_document_list[0].content;

my_document_list是一个数组,因此应该在那里进行数组访问。