2

我正在尝试在此处遵循单页应用程序示例

在应该解析 JSON 的地方出现错误:SyntaxError: JSON.parse: unexpected character if I leave out dataType: 'json' If I put in dataTyp: 'json', then no errors, but json is not returned and我的模板没有填写。

我放了一个gridview,看看我的列表是否正在返回......确实如此。

我已经加载了 jquery、sammy.js、json2.js 和 sammy.template.js..all 最新和最好的。

我知道这是一个差异网站上的示例应用程序,我感谢你们的时间。我只是喜欢关注和理解,因为 SPA 应用程序令人兴奋。

javascript:

$(document).ready(function () {
    //alert('Jquery has loaded');

    var loadOptions = { type: 'get', dataType: 'json', cache: false };
    var app = $.sammy('#sammyDiv', function () {
        this.use('Template');
        this.use('Session');
        this.around(function (callback) {
            var context = this;
            this.load('Default.aspx/GetEmployees', { cache: false })  // loadOptions ) // { dataType: 'json', cache: false })

                    .then(function (items) {

                        context.items = JSON.parse(items).d;   // browser parser... I believe it fails right here
                        //context.items = $.parseJSON(items).d;  //jQuery handling
                        //alert(context.items);
                        //context.items = JSON.stringify(items);
                    })
                    .then(callback);

        });

cs代码:

    static List<Employees> emps;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            emps = new List<Employees>();
            Employees emp = new Employees("Kedar", "Kulkarni", "0001", "A");
            Employees emp1 = new Employees("ABC", "XYZ", "21211", "B");
            emps.Add(emp);
            emps.Add(emp1);
        }

        /* using foreach method
        foreach (Person person in persons)
            {
                    Response.Write(String.Format("Name : {0} Age : {1} Address : {2} Job : {3}", person.Name, person.Age, person.Address, person.Job));
                    Response.Write("</br>");
            }
         */
        this.GridView1.DataSource = emps;   //for testing to see if my list gets returned
        this.GridView1.DataBind();
    }

    [WebMethod,  ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
    public static List<Employees> GetEmployees()
    {
        return emps;
    }
4

1 回答 1

0

终于找到了我的答案:

我取出 dataType: 'json' 并替换为下面。一切都很好。

var loadOptions = { type: 'get', cache: false, contentType: "application/json; charset=utf-8" };

于 2012-10-05T19:49:35.803 回答