zoukankan      html  css  js  c++  java
  • Ajax请求ashx返回json数据的常见问题(转自:http://blog.163.com/m13864039250_1/blog/static/21386524820133254431945/)

    1。请求text数据,在success事件中手动解析

    前台:
                    $.ajax({
                        type: "post",
                        url: "checkFile.ashx",
                        data: { "filename": "2" },
                        dataType: "text",
                        success: function (data) {
                            var json = eval('(' + data + ')');
                            alert(json.Age);
                        }
                    });
    后台处理:
                HttpResponse res = context.Response;
                HttpRequest req = context.Request;
                string code = req["filename"];
                string jsonString = "{"Age":28,"Name":"张三"}";
                //string jsonString = "{'Age':23,'Name':'abc'}";
                if (code != null)
                {
                    res.Write(jsonString);
                    res.ContentType = "text/plain";
                    res.End();
                }
    在这种情况下,单引号分割和转移双引号分割,都可以。
     
     
     
     
     
    2.请求json格式数据,jquery自动解析
    前台:
                    $.ajax({
                        type: "post",
                        url: "checkFile.ashx",
                        data: { "filename": "3" },
                       // contentType:"application/json",----------在ajax请求ashx文件的json数据时,此属性不能被指定,而在请求webservices时,是必须指定的。
                        dataType: "json",
                        success: function (data) {
                            alert(data.Name);
                        }
                    });
     
    后台处理:
                HttpResponse res = context.Response;
                HttpRequest req = context.Request;
                string code = req["filename"];
               string jsonString = "{"Age":28,"Name":"张三"}";
                if (code != null)
                {
                    res.Write(jsonString);
                    res.ContentType = "text/plain";
                    res.End();
                }
    在这种情况下,只有转移双引号分割,才可以在前台被jquery方法自动解析。
     
     
    3.带序列化的text数据前台解析
    前台:
                    $.ajax({
                        type: "post",
                        url: "checkFile.ashx",
                        data: { "filename": "2" },
                        dataType: "text",
                        success: function (data) {
                            $("p").text(data);
                            var json = eval('(' + data + ')');
                            alert(json.Name);
                        }
                    });
    json数据内容:   {"Name":"zhangsan","Code":111,"Birthday":"/Date(649666800000)/"}
    后台处理:
     
                HttpResponse res = context.Response;
                HttpRequest req = context.Request;
                string code = req["filename"];
                Student stu = new Student { 
                Name="zhangsan",
                Code=111,
                Birthday=Convert.ToDateTime("1990-8-3")
                };
                JavaScriptSerializer serializer=new JavaScriptSerializer();
                string jsonString = serializer.Serialize(stu);
    json数据内容:  "{"Name":"zhangsan","Code":111,"Birthday":"\/Date(649666800000)\/"}"
                if (code != null)
                {
                    res.Write(jsonString);
                    res.ContentType = "text/plain";
                    res.End();
                }
        [Serializable]
        public class Student
        {
            public string Name { get; set; }
            public int Code { get; set; }
            public DateTime Birthday { get; set; }
        }
    4.带序列化的json 前台自动解析:
    前台:
                    $.ajax({
                        type: "post",
                        url: "checkFile.ashx",
                        data: { "filename": "3" },
                        dataType: "json",--------------只要指定此处就可以,后台处理同上。
                        success: function (data) {
                            alert(data.Name);
                        }
                    });
  • 相关阅读:
    我为能准时下班而做的准备,以及由此的收获,同时总结下不足
    用象棋的思维趣说IT人的职业发展和钱途
    简历上如果出现过于高大上的项目,反而过犹不及:再论如何通过项目引出技术
    用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)
    如果当前没有拿得出手的简历,也别慌,努力的话最多两年情况就能改变
    分析若干没面试机会和没体现实力的简历
    IT人为了自己父母和家庭,更得注意自己的身体和心理健康
    Spring Cloud系列文,Feign整合Ribbon和Hysrix
    以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
    博客园是个大金矿,管理员不挖掘有些可惜:给博客园提一些双赢的建议
  • 原文地址:https://www.cnblogs.com/ANLOG/p/4260031.html
Copyright © 2011-2022 走看看