ajax+ashx返回值详解

来源:互联网 发布:自动切换窗口软件 编辑:程序博客网 时间:2024/06/05 20:18

做Asp.Net网站开发,少不了使用ajax技术,我平时也经常用ajax但总觉得了解的不透彻,今天在这里总结一下,也给有需要的人提供一点帮助。前台我不太理解的是dataType=text和dataType=json有啥区别,后台我想搞清楚能不序列化直接返回对象吗?下面将揭晓答案。

后台返回string

后台代码:

public void ProcessRequest(HttpContext context){    try    {        string action = context.Request.Form["action"];        string param1 = context.Request.Form["param1"];        switch (action)        {            case "getString":                //【1】转化成json返回                context.Response.Write(JsonHelper.Serialize(GetString()));                //【2】直接返回                //context.Response.Write(GetString());                                        break;            default:                break;        }    }    catch (Exception ex)    {        context.Response.Write("error");    }}private string GetString(){    return "abcde";}

前台代码dataType=text:

function GetStringText() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getString", param1: "aaa" },        dataType: "text",        success: function(data) {            //【1】后台数据转化成json字符串            alert("data=" + data);        },        error: function(error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=text运行截图:
这里写图片描述
后台数据直接返回,dataType=text运行截图:
这里写图片描述
前台代码dataType=json:

function GetStringJosn() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getString", param1: "aaa" },        dataType: "json",        success: function (data) {            //【1】后台数据转化成json字符串            alert("data=" + data);            //【2】后台数据不进行转化直接进入error处理分支        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=json运行截图:
这里写图片描述
后台数据直接返回,dataType=json运行截图:
这里写图片描述

后台返回string[]

后台代码:

public void ProcessRequest(HttpContext context){    try    {        string action = context.Request.Form["action"];        string param1 = context.Request.Form["param1"];        switch (action)        {            case "getArray":                //【1】转化成json返回                context.Response.Write(JsonHelper.Serialize(GetArray()));                //【2】直接返回                //context.Response.Write(GetArray());                                        break;            default:                break;        }    }    catch (Exception ex)    {        context.Response.Write("error");    }}private string[] GetArray(){    string[] array = {"aaa", "bbb", "ccc", "ddd", "eee"};    return array;}

前台代码dataType=text:

function GetArrayText() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getArray", param1: "aaa" },        dataType: "text",        success: function(data) {            //【1】后台数据转化成json字符串            var json = eval('(' + data + ')');            alert("data=" + data + "\r\n" +                "json[0]=" + json[0] + "\r\n" +                "json[1]=" + json[1] + "\r\n" +                "json[2]=" + json[2]);            //【2】后台数据不进行转化data="System.string[]"            //alert("data=" + data + "\r\n" +            //    "data[0]=" + data[0] + "\r\n" +            //    "data[1]=" + data[1] + "\r\n" +            //    "data[2]=" + data[2]);        },        error: function(error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=text运行截图:
这里写图片描述
后台数据直接返回,dataType=text运行截图:
这里写图片描述
前台代码dataType=json:

function GetArrayJosn() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getArray", param1: "aaa" },        dataType: "json",        success: function (data) {            //【1】后台数据转化成json字符串                                alert("data=" + data + "\r\n" +                "data[0]=" + data[0] + "\r\n" +                "data[1]=" + data[1] + "\r\n" +                "data[2]=" + data[2]);            //【2】后台数据不进行转化直接进入error处理分支        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=json运行截图:
这里写图片描述
后台数据直接返回,dataType=json运行截图:
这里写图片描述

后台返回Dictionary

后台代码:

public void ProcessRequest(HttpContext context){    try    {        string action = context.Request.Form["action"];        string param1 = context.Request.Form["param1"];        switch (action)        {            case "getDictionary":                //【1】转化成json返回                context.Response.Write(JsonHelper.Serialize(GetDictionary()));                //【2】直接返回                //context.Response.Write(GetDictionary());                                        break;            default:                break;        }    }    catch (Exception ex)    {        context.Response.Write("error");    }}private Dictionary<string,object> GetDictionary(){    Dictionary<string, object> dict = new Dictionary<string, object>()    {        {"name","guo"},        {"age",18},        {"address","唐宁街十号"}    };    return dict;}

前台代码dataType=text:

function GetDictionaryText() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getDictionary", param1: "aaa" },        dataType: "text",        success: function(data) {            //【1】后台数据转化成json字符串            var json = eval('(' + data + ')');            alert("data=" + data + "\r\n" +                "json=" + json + "\r\n" +                "json[name]=" + json["name"] + "\r\n" +                "json[age]=" + json["age"] + "\r\n" +                "json[address]=" + json["address"]);            //【2】后台数据不进行转化            //alert("data=" + data + "\r\n" +            //    "data[0]=" + data[0] + "\r\n" +            //    "data[1]=" + data[1] + "\r\n" +            //    "data[2]=" + data[2]);        },        error: function(error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=text运行截图:
这里写图片描述
后台数据直接返回,dataType=text运行截图:
这里写图片描述
前台代码dataType=json:

function GetDictionaryJosn() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getDictionary", param1: "aaa" },        dataType: "json",        success: function (data) {            //【1】后台数据转化成json字符串            alert("data=" + data + "\r\n" +                "data[name]=" + data["name"] + "\r\n" +                "data[age]=" + data["age"] + "\r\n" +                "data[address]=" + data["address"]);            //【2】后台数据不进行转化直接进入error处理分支        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=json运行截图:
这里写图片描述
后台数据直接返回,dataType=json运行截图:
这里写图片描述

后台返回class

后台代码:

public void ProcessRequest(HttpContext context){    try    {        string action = context.Request.Form["action"];        string param1 = context.Request.Form["param1"];        switch (action)        {            case "getClass":                //【1】转化成json返回                context.Response.Write(JsonHelper.Serialize(GetClass()));                //【2】直接返回                //context.Response.Write(GetClass());                                        break;            default:                break;        }    }    catch (Exception ex)    {        context.Response.Write("error");    }}private Student GetClass(){    Student objStudent = new Student()    {        Name = "guo",        Age = 18    };    return objStudent;}

前台代码dataType=text:

function GetClassText() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getClass", param1: "aaa" },        dataType: "text",        success: function (data) {            //【1】后台数据转化成json字符串            var json = eval('(' + data + ')');            alert("data=" + data + "\r\n" +                "json=" + json + "\r\n" +                "json[Name]=" + json["Name"] + "\r\n" +                "json[Age]=" + json["Age"]);            //【2】后台数据不进行转化            //alert("data=" + data + "\r\n" +            //    "data[0]=" + data[0] + "\r\n" +            //    "data[1]=" + data[1] + "\r\n" +            //    "data[2]=" + data[2]);        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=text运行截图:
这里写图片描述
后台数据直接返回,dataType=text运行截图:
这里写图片描述
前台代码dataType=json:

function GetClassJosn() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getClass", param1: "aaa" },        dataType: "json",        success: function (data) {            //【1】后台数据转化成json字符串            alert("data=" + data + "\r\n" +                "data[Name]=" + data["Name"] + "\r\n" +                "data[Age]=" + data["Age"]);            //【2】后台数据不进行转化直接进入error处理分支        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=json运行截图:
这里写图片描述
后台数据直接返回,dataType=json运行截图:
这里写图片描述

后台返回json字符串

后台代码:

public void ProcessRequest(HttpContext context){    try    {        string action = context.Request.Form["action"];        string param1 = context.Request.Form["param1"];        switch (action)        {            case "getJson":                //【1】转化成json返回                context.Response.Write(JsonHelper.Serialize(GetJson()));                //【2】直接返回                //context.Response.Write(GetJson());                                        break;            default:                break;        }    }    catch (Exception ex)    {        context.Response.Write("error");    }}private string GetJson(){    string json = "{\"name\":\"guo\",\"age\":\"18\",\"content\":{\"phone\":\"18233199999\",\"address\":\"唐宁街十号\"}}";                return json;}

前台代码dataType=text:

function GetJsonText() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getJson", param1: "aaa" },        dataType: "text",        success: function(data) {            //【1】后台数据转化成json字符串            var json = eval('(' + data + ')');            json = eval('(' + json + ')');            alert("data=" + data + "\r\n" +                "json=" + json + "\r\n" +                "json[name]=" + json["name"] + "\r\n" +                "json[age]=" + json["age"] + "\r\n" +                "json[content]=" + json["content"] + "\r\n" +                "json[content][phone]=" + json["content"]["phone"] + "\r\n" +                "json[content][address]=" + json["content"]["address"]);            //【2】后台数据不进行转化            //var json = eval('(' + data + ')');            //alert("data=" + data + "\r\n" +            //    "json=" + json + "\r\n" +            //    "json[name]=" + json["name"] + "\r\n" +            //    "json[age]=" + json["age"] + "\r\n" +            //    "json[content]=" + json["content"] + "\r\n" +            //    "json[content][phone]=" + json["content"]["phone"] + "\r\n" +            //    "json[content][address]=" + json["content"]["address"]);        },        error: function(error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=text运行截图:
这里写图片描述
后台数据直接返回,dataType=text运行截图:
这里写图片描述
前台代码dataType=json:

function GetJsonJosn() {    $.ajax({        type: "post",        url: "Handler1.ashx",        contentType: "application/x-www-form-urlencoded;charset=utf-8;",        data: { action: "getJson", param1: "aaa" },        dataType: "json",        success: function (data) {            //【1】后台数据转化成json字符串            var json = eval('(' + data + ')');            alert("data=" + data + "\r\n" +                "json=" + json + "\r\n" +                "json[name]=" + json["name"] + "\r\n" +                "json[age]=" + json["age"] + "\r\n" +                "json[content]=" + json["content"] + "\r\n" +                "json[content][phone]=" + json["content"]["phone"] + "\r\n" +                "json[content][address]=" + json["content"]["address"]);            //【2】后台数据不进行转化            //alert("data=" + data + "\r\n" +            //    "data[name]=" + data["name"] + "\r\n" +            //    "data[age]=" + data["age"] + "\r\n" +            //    "data[content]=" + data["content"] + "\r\n" +            //    "data[content][phone]=" + data["content"]["phone"] + "\r\n" +            //    "data[content][address]=" + data["content"]["address"]);        },        error: function (error) {            alert("error=" + error);        }    });}

后台数据进行json序列化,dataType=json运行截图:
这里写图片描述
后台数据直接返回,dataType=json运行截图:
这里写图片描述

原创粉丝点击