从WebMethod和sammy.js返回JSON数据

时间:2012-10-05 18:44:57

标签: javascript sammy.js

我正在尝试关注单页应用示例here

应该解析JSON的地方我得到错误: SyntaxError:JSON.parse:如果我遗漏dataType的意外字符:'json' 如果我输入dataTyp:'json',那么没有错误,但是没有返回json而我的模板没有填写。

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

我已经加载了jquery,sammy.js,json2.js和sammy.template.js ......所有最新和最好的。

我知道这是差异网站上的示例应用程序,我很感谢你们这些人的时间。我只想跟随并理解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 code:

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

1 个答案:

答案 0 :(得分:0)

终于找到了答案:

我拿出了dataType:'json'并替换为下面的内容。一切都很好。

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