2013-02-21 50 views
0

我對kendoUI和json很新,我的問題是似乎數據沒有加載,可能是不正確的模式或其他東西,沒有錯誤,只是加載整個時間的組合框。 這裏是我的示例代碼:KendoUI和json

$(document).ready(function() { 
    clientDS = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: "http://localhost/JSON_MP.asmx/GetListCountries?developerId=101&developerHash=9df7273b410761f74331bde746e5c2354b73b487&timestamp=1242207092430", //Note the URL path! 
       dataType: "json", 
       contentType: "application/json; charset=utf-8" 

      } 
     }, 
     schema: { 
      data: "listValues"    
     } 
    }); 

    $("#kendoCboClient").kendoComboBox({ 
     placeholder: "Select a Country...", 
     dataTextField: "name", 
     dataValueField: "id", 
     dataSource: clientDS 
    }); 
}); 

和我的數據棧:

{ 「Errorstring,則」: 「OK」, 「錯誤碼」 0 「listValues」:[{ 「Name」:「UNKNOWN 「」id「:1},{」name「:」南非「,」id「:2},{」name「:」莫桑比克「,」id「:3},{」name「:」菲律賓「 ,「id」:4},{「name」:「納米比亞」,「id」:5},{「name」:「阿拉伯聯合酋長國」,「id」:6},{「name」 , 「ID」:7},{ 「名稱」: 「史瓦濟蘭」, 「ID」:8},{ 「名稱」: 「葡萄牙」, 「ID」:9},{ 「名稱」: 「希臘」,」標識 「:10},{」 名稱 「:」 毛里求斯」, 「ID」:11},{ 「名稱」: 「坦桑尼亞」, 「標識」:12},{ 「名稱」: 「波扎那」, 「ID」 :13},{ 「名」: 「西班牙」, 「ID」:15},{ 「名」: 「Scottland」, 「ID」:16},{ 「名」: 「澳大利亞」, 「ID」:17 },{「name」:「新西蘭」,「id」:18},{「name」:「塞浦路斯」,「id」:19},{「name」:「美國」,「id」 20},{ 「名稱」: 「德國」, 「ID」:21},{ 「名稱」: 「」, 「ID」:22},{ 「名稱」: 「馬達加斯加」, 「ID」:23}, {「name」:「馬來西亞」,「id」:24},{「name」:「塞舌爾」,「id」:25}],「listType」:「國家」}

如果有人可以指向我注意到在數據棧中我使用的是「listValues」對象,可能是因爲「」errorString「:」ok「,」errorCode「:0,」這是問題的一部分?

+0

使用'schema.parse'回調來查看哪個響應'DataSource'正在接收,並嘗試從那裏返回'report.listValues'使用'schema.data'。 – 2013-02-21 09:44:53

回答

0

我有一個類似的問題 - 沒有數據也沒有錯誤。實際的問題是返回json數據的頁面是發送「html」內容類型頭而不是「application/json」。這個問題實際上是在這裏解決的:http://docs.kendoui.com/tutorials/PHP/build-apps-with-kendo-ui-and-php(向下滾動到「There's No Data ...」部分),並且通過確保您發送正確的內容類型標頭來解決該問題。

2

我剛剛試過你的代碼,工作得很好!我只需要更改一行代碼:url,因爲我當然沒有在與您相同的路徑上部署文件。

說了這麼...:

  1. 嘗試打開在瀏覽器中url,你在你的代碼輸入,並檢查它實際上返回,你在你的問題包括JSON。
  2. 如果以前的工作正常,那麼如果您的瀏覽器具有開發人員工具,請檢查瀏覽器控制檯是否存在錯誤。
  3. 如果你沒有開發工具或不知道如何使用它們,請嘗試:

var clientDS = new kendo.data.DataSource({ 
    transport: { 
     read: function (options) { 
      $.ajax({ 
       url : "http://localhost/JSON_MP.asmx/GetListCountries?developerId=101&developerHash=9df7273b410761f74331bde746e5c2354b73b487&timestamp=1242207092430", 
       data : options.data, 
       success: function (result) { 
        alert("Good!"); 
        options.success(result); 
       }, 
       error : function (xhr, textStatus, errorThrown) { 
        alert("bad!: " + xhr.status + " - " + textStatus + " - " + errorThrown); 
       } 
      }); 
     } 
    }, 
    schema : { 
     data : "listValues" 
    } 
}); 
$("#kendoCboClient").kendoComboBox({ 
    placeholder : "Select a Country...", 
    dataTextField : "name", 
    dataValueField: "id", 
    dataSource : clientDS 
}); 

看看是否顯示錯誤警報,並給出你的一些信息。

0

在我的情況下,我有這樣的: 我測試的html文件來自本地文件系統,以及我從服務器url加載的json對象。 有一次,我改變了url從本地文件系統讀取,它解決了問題