2013-07-25 41 views
2

我在做什麼錯?所有我想要做的就是從一個API得到一些數據,並在屏幕上顯示出來:0x800a01bd - JavaScript運行時錯誤:對象不支持此操作 - Kendo UI

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Kendo UI Test</title> 
     <link href="styles/kendo.common.min.css" rel="stylesheet" /> 
     <link href="styles/kendo.default.min.css" rel="stylesheet" /> 
     <script src="js/jquery.min.js"> </script> 
     <script src="js/kendo.web.min.js"> </script> 
    </head> 
    <body> 
     <div id="grid"></div> 

     <script type="text/javascript"> 
      $(document).ready(function() 
      { 
       var retrievedData = new kendo.data.dataSource({ 
        transport: { 
         read: { 
          url: "http://puppygifs.tumblr.com/api/read/json", 
          dataType: "json" 
         } 
        } 
       }); 

       $("#grid").kendoGrid({ 
        dataSource: retrievedData, 
        pageSize: 10 
       }); 
      }); 

     </script> 
    </body> 
</html> 

在這一部分出現的錯誤:

var retrievedData = new kendo.data.dataSource({ 
        transport: { 
         read: { 
          url: "http://puppygifs.tumblr.com/api/read/json", 
          dataType: "json" 
         } 
        } 
       }); 

編輯:

我將如何修改從一個對象捕獲數據的代碼,如下所示:

[ 
{ 
<NotificationNode>k__BackingField: { 
isDirty: false, 
isRecordAdded: false, 
isRecordDeleted: false, 
<CaseStatus>k__BackingField: null, 
<CaseName>k__BackingField: null, 
<CaseType>k__BackingField: null, 
<CaseStage>k__BackingField: null, 
<CaseNotificationId>k__BackingField: 0, 
<CaseId>k__BackingField: 0, 
<Comments>k__BackingField: null, 
<WarningDays>k__BackingField: 0, 
<NotificationDate>k__BackingField: "0001-01-01T00:00:00", 
<LetterUrl>k__BackingField: null, 
<NotificationId>k__BackingField: 0, 
<NotificationDescription>k__BackingField: null, 
<NotificationCount>k__BackingField: 1889, 
<ParamValue1>k__BackingField: null, 
<ParamValue2>k__BackingField: null, 
<ParamValue3>k__BackingField: null, 
<ParamValue4>k__BackingField: null, 
<ParamValue5>k__BackingField: null, 
<NotificationStatus>k__BackingField: 0, 
<Checked>k__BackingField: false, 
notificationTypeId: 1, 
notificationType: "Add/Edit Gross Earnings", 
actionPageName: null, 
param1: null, 
param2: null, 
param3: null, 
param4: null, 
param5: null, 
dateEntered: "0001-01-01T00:00:00", 
whoEntered: 0, 
dateChanged: "0001-01-01T00:00:00", 
whoChanged: 0 
}, 
<Notifications>k__BackingField: [ ], 
<IsExpanded>k__BackingField: false 
}, 
+1

這將是非常有益知道什麼行代碼產生的問題。 – Pointy

+2

它必須是DataSource(大寫字母D) –

+0

@ Dr.Molle,我們正在取得進展!修復了這個錯誤。現在我怎麼在屏幕上看不到任何東西?我是否需要顯式定義要顯示的json的列? –

回答

1

你在dataSource選項上有一個錯字,它是mu st DataSource;您正在閱讀的數據來自另一個來源,因此您需要使用jsonp作爲dataType

提供的服務返回一組複雜的數據,您必須只讀取要在網格中顯示的數據並綁定要顯示在列中的數據。

您可以使用schemacolumns參數執行此操作。

代碼:

$(document).ready(function() { 
     var retrievedData = new kendo.data.DataSource({ 
      transport: { 
       read: { 
        url: "http://puppygifs.tumblr.com/api/read/json", 
        dataType: "jsonp" 
       } 
      }, 
      schema: { 
       data: "posts" 
      } 
     }); 
     $("#grid").kendoGrid({ 
      dataSource: retrievedData, 
      columns: [{ 
       field: "id", 
       title: "ID", 
       width: 150 
      }, { 
       field: "url", 
       title: "URL", 
       width: 150 
      }] 
     }); 
    }); 

工作演示:jsFiddle

+0

中的建議,非常感謝Edward。我只是不明白這部分:模式:{data:「posts」}。你是如何獲得「職位」的? –

+0

愛德華,我編輯了我的帖子。我找回的對象格式不同,它不會拉動網格上的數據。你能給我一個關於如何顯示以這種格式返回的數據的手嗎? (包含所有這些「k__BackingField」) –

+0

「posts」字符串是包含行列表的JSON對象,我通過檢查提供的Web方法找到它。你的情況與提供的問題不同......但是什麼是「k__BackingField」你能提供一個jsfiddle嗎? –

相關問題