3
Error - Error: Uncaught SyntaxError: Unexpected token :

确切的问题错误
平台-Icenium。

我们正在使用远程服务 -http://localhost:35798/RestServiceImpl.svc/json这将获取数据。我在从服务接收到的数据中附加了格式。 数据返回格式

这是我的代码:

var dataSource = new kendo.data.DataSource({
    schema: {
        data: "d"
    },
    transport: {
        read: {
            url: "http://localhost:35798/RestServiceImpl.svc/json",
            dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
            data: {
                id: "4"
            },
            type: "GET",
            contentType: "application/json;charset=utf-8"
        },
        change: function () {
            alert('called');
            var data = this.data();
            console.log(data.length); // displays "77"
            debugger;
            $('#txtJson').val(data[0].name);
        }

    }
});

$("#submitButton").click(function () {
    dataSource.read();
    var data = dataSource.data();
    console.log(data.length);
});

这是我的服务代码-

[OperationContract]
    [WebInvoke(Method = "GET",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "json?id={id}")
        ]
    List<Person> JSONData(string id);

Q 1) 如何解决这个错误 - Uncaught SyntaxError: Unexpected token,我错过了什么吗?

Q 2)点击按钮后我打电话dataSource.read(),之后dataSource.data().length得到0。我认为这应该是处理dataSource.bind(change:function())。但是,dataSource.read()更改后功能不会触发。

4

1 回答 1

3

一旦你解决了 JSON 与 JSONP 的问题,数据仍然是空的,因为你并没有说datasource.schema数据实际上是在接收到的 JSON 的一个名为JSONDataResult.

schema应该是:

schema: {
    data: "JSONDataResult"
},

您可以将解析函数添加到架构以调试您得到的内容:

schema : {
    parse: function(response) {
        console.log("parse");
        console.log(JSON.stringify(response, null, 4));
        debugger;
        return response.JSONDataResult;
    }
}
于 2013-05-21T20:07:11.617 回答