0

我对 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","errorCode":0,"listValues":[{"name":"UNKNOWN","id":1},{"name":"南非","id": 2},{"name":"莫桑比克","id":3},{"name":"菲律宾","id":4},{"name":"纳米比亚","id":5} ,{"name":"阿拉伯联合酋长国","id":6},{"name":"England","id":7},{"name":"Swaziland","id":8} ,{"name":"葡萄牙","id":9},{"name":"希腊","id":10},{"name":"毛里求斯","id":11},{ "name":"坦桑尼亚","id":12},{"name":"博茨瓦纳","id":13},{"名称":"西班牙","id":15},{"name":"苏格兰","id":16},{"name":"澳大利亚","id":17},{"name" :"新西兰","id":18},{"name":"塞浦路斯","id":19},{"name":"美国","id":20},{"name" :"德国","id":21},{"name":"","id":22},{"name":"马达加斯加","id":23},{"name":"马来西亚","id":24},{"name":"塞舌尔","id":25}],"listType":"Country"}"新西兰","id":18},{"name":"塞浦路斯","id":19},{"name":"美国","id":20},{"name": "德国","id":21},{"name":"","id":22},{"name":"马达加斯加","id":23},{"name":"马来西亚" ,"id":24},{"name":"塞舌尔","id":25}],"listType":"Country"}"新西兰","id":18},{"name":"塞浦路斯","id":19},{"name":"美国","id":20},{"name": "德国","id":21},{"name":"","id":22},{"name":"马达加斯加","id":23},{"name":"马来西亚" ,"id":24},{"name":"塞舌尔","id":25}],"listType":"Country"}id":24},{"name":"Seychelles","id":25}],"listType":"Country"}id":24},{"name":"Seychelles","id":25}],"listType":"Country"}

如果有人可以将我指向正确的方向或某事,请注意在数据堆栈中我使用“listValues”对象,可能是因为“”errorString“:”ok“,”errorCode“:0,”那是问题的一部分?

4

3 回答 3

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
});

并查看是否显示错误警报并为您提供一些信息。

于 2013-02-21T21:29:20.397 回答
0

我有一个类似的问题 - 没有数据也没有错误。实际问题是返回 json 数据的页面发送的是“html”内容类型标头而不是“application/json”。这个问题实际上在这里得到了解决:http ://docs.kendoui.c​​om/tutorials/PHP /build-apps-with-kendo-ui-and-php(向下滚动到“没有数据......”部分)并通过确保您发送正确的内容类型标头来修复。

于 2013-05-31T16:19:40.767 回答
0

就我而言,我有这个:我的测试 html 文件来自本地文件系统,而我从服务器 url 加载的 json 对象。有一次,我将 url 更改为从本地文件系统读取,它解决了问题

于 2016-06-21T19:53:58.787 回答