ASP.NET使用Ajax返回Json对象的方法

一、新建一个html页面,如注册页面"Register.htm"

<!DOCTYPE html>
<html >
<head>
  <title>用户注册</title>
  <meta charset="utf-8" />
  <style type="text/css">
    .msg
    {
      color:Red;
    }
  </style>
</head>
<body>
  <!--
    因为是ajax提交,html表单控件可以不必放在form里,且不能使用提交按纽(type="submit"),而使用普通按纽(type="button")
  -->
  用户名:<input type="text" name="id" id="id" /><span id="idMsg" class="msg"></span><br /> <!-- span用来显示错误信息 -->
  密 码:<input type="password" name="pwd" id="pwd" /><span id="pwdMsg" class="msg"></span><br />
  姓 名:<input type="text" name="name" id="xm" /><span id="nameMsg" class="msg"></span><br />
  <input id="btnReg" type="button" value="注册" />
  <script type="text/javascript" src="bootstrap/js/jquery.js">
  </script>
  <script src="reg.js" type="text/javascript"></script>
</body>
</html>

二、新建一js文件,如:reg.js

$(function() {
  //定义清除错误信息的函数
  function clearMsg() {
    $(".msg").html("");
  }
  //定义获取表单数据的函数,注意返回json对象
  function formData() {
    return {
      id: $("#id").val(),
      pwd: $("#pwd").val(),
      name: $("#xm").val()
    };
  }
  //定义注册功能的函数
  function reg() {
    var url = "Register.ashx";
    var data = formData();
    clearMsg();
    $.ajax({
      type: 'GET', //自动会把json对象转换为查询字符串附在url后面如:http://localhost:49521/Register.ashx?id=a&pwd=b&name=c
      url: url,
      dataType: 'json', //要求服务器返回一个json类型的数据,如:{"success":true,"message":"注册成功"}
      contentType: 'application/json',//发送信息给服务器时,内容编码的类型
      data: data, //提交给服务器的数据,直接使用json对象的数据,如:{"id":"a","pwd":"b","name":"c"} (如果要求json格式的字符串,可使用用JSON.stringify(data))
      success: function(responseData) {//如果响应成功(即200)
      if (responseData.success == true) {//responseData也是json格式,如:{"success":true,"message":"注册成功"}
          alert(responseData.message);
        } else {
        var msgs = responseData.msgs;//msgs对象是一个数组,如下所示:
        //{"success":false,"message":"注册失败","msgs":[{"id":"pwdMsg","message":"密码不能为空."},{"id":"nameMsg","message":"姓名不能为空."}]}
          for (var i = 0; i < msgs.length; i++) {
            $('#' + msgs[i].id).html(msgs[i].message);
          }
        }
      },
      error: function() {
      //要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
      //function(XMLHttpRequest, textStatus, errorThrown){
      //通常情况下textStatus和errorThrown只有其中一个包含信息
      //this;  //调用本次ajax请求时传递的options参数
        alert(arguments[1]);
      }
    });//ajax
  }
  //定义一个初始化函数
  function init() {
    $("#btnReg").click(function() {
      reg();
    });
  }
  //调用初始化函数
  init();
});

三、处理ajax请求

方法一:手动拼接json字符串

新建一般处理程序,如:Register.ashx

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Collections.Generic;
namespace WebLogin
{
  /// <summary>
  /// $codebehindclassname$ 的摘要说明
  /// </summary>
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class Register1 : IHttpHandler
  {
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "application/json";//设置响应内容的格式是json格式
      string id = context.Request["id"];
      string pwd = context.Request["pwd"];
      string name = context.Request["name"];
      List<string> msgList = new List<string>();
      if (String.IsNullOrEmpty(id))
      {
        msgList.Add("{\"id\":\"idMsg\",\"message\":\"用户名不能为空.\"}");
      }
      if (pwd==null || pwd=="")
      {
        msgList.Add("{\"id\":\"pwdMsg\",\"message\":\"密码不能为空.\"}");//形如:{"id":"pwdMsg","message":"密码不能为空."}
      }
      if (name==null || name=="")
      {
        msgList.Add("{\"id\":\"nameMsg\",\"message\":\"姓名不能为空.\"}");
      }
      string responseText = "";
      if (msgList.Count == 0)
      {
        //调用后台代码写入数据库
        responseText = "{\"success\":true,\"message\":\"注册成功\"}";
      }
      else
      {
        string msgsValue = "";
        for (int i = 0; i < msgList.Count; i++)
        {
          msgsValue += msgList[i] + ",";//将列表中的每一个字符串连接起来,用","隔开,不过最后还会多","
        }
        msgsValue=msgsValue.Substring(0, msgsValue.Length - 1);//去掉末尾的","
        msgsValue = "[" + msgsValue + "]";//用"[]"括起来,如:[{"id":"pwdMsg","message":"密码不能为空."},{"id":"nameMsg","message":"姓名不能为空."}]
        responseText = "{\"success\":false,\"message\":\"注册失败\",\"msgs\":" + msgsValue + "}";
        //最的形如:{"success":false,"message":"注册失败","msgs":[{"id":"pwdMsg","message":"密码不能为空."},{"id":"nameMsg","message":"姓名不能为空."}]}
      }
      context.Response.Write(responseText);
    }
    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}

方法二:使用Json.NET工具来将C#对象转换json输出

1、新建信息类“Msg.cs”

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebLogin
{
  public class Msg
  {
    private string id;
    public string Id
    {
      get { return id; }
      set { id = value; }
    }
    private string message;
    public string Message
    {
      get { return message; }
      set { message = value; }
    }
    public Msg(string id, string message)
    {
      this.id = id;
      this.message = message;
    }
  }
}

2、新建返回json对象的类“ResponseData.cs”

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
namespace WebLogin
{
  public class ResponseData
  {
    private bool success;
    public bool Success
    {
      get { return success; }
      set { success = value; }
    }
    private string message;
    public string Message
    {
      get { return message; }
      set { message = value; }
    }
    private List<Msg> msgs;
    public List<Msg> Msgs
    {
      get { return msgs; }
      set { msgs = value; }
    }
    public ResponseData(bool success, string message)
    {
      this.success = success;
      this.message = message;
    }
    public ResponseData(bool success, string message, List<Msg> msgs)
    {
      this.success = success;
      this.message = message;
      this.msgs = msgs;
    }
  }
}

3、去官网下载Json.NET,并复制引用

官网:http://www.newtonsoft.com/json

下载地址:http://pan.baidu.com/s/1nvz9JBV

下载解压后将“Newtonsoft.Json.dll”复制到项目的“bin”目录中,并引用(注意和.net版本保持一致)

4、新建一般处理程序“reg.ashx”

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;//引入
namespace WebLogin
{
  /// <summary>
  /// $codebehindclassname$ 的摘要说明
  /// </summary>
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class reg : IHttpHandler
  {
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "application/json";//设置响应内容的格式是json格式
      string id = context.Request["id"];
      string pwd = context.Request["pwd"];
      string name = context.Request["name"];
      List<Msg> msgs = new List<Msg>();
      if (String.IsNullOrEmpty(id))
      {
        msgs.Add(new Msg("idMsg", "用户名不能为空."));
      }
      if (String.IsNullOrEmpty(pwd))
      {
        msgs.Add(new Msg("pwdMsg", "密码不能为空."));
      }
      if (String.IsNullOrEmpty(name))
      {
        msgs.Add(new Msg("nameMsg", "姓名不能为空."));
      }
      ResponseData rData;
      if (msgs.Count == 0)
      {
        //调用注册方法,写入数据库
        rData = new ResponseData(true, "注册成功.");
      }
      else
      {
        rData = new ResponseData(false, "注册失败.", msgs);
      }
      context.Response.Write(JsonConvert.SerializeObject(rData));//直接调用方法将rData转换为json字符串
    }
    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}

四、完成效果如图

以上所述是小编给大家介绍的ASP.NET使用Ajax返回Json对象的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码

    复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxJson.aspx.cs" Inherits="AjaxJson" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

  • jQuery+ajax+asp.net获取Json值的方法

    本文实例讲述了jQuery+ajax+asp.net获取Json值的方法.分享给大家供大家参考,具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQueryAjaxJson取值示例</title> <script type="text/javascript" src="Scripts/jquery-1.4.4.min.js&

  • asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码

    首先贴上Jquery的ajax: 复制代码 代码如下: $.ajax({ url: 'ws_Ajax.asmx/BindDictByUpper', type: 'POST', contentType: 'application/json;charset=utf-8', dataType: 'json', data: '{ PpareId:"' + varlue + '"}', success: function (data) { var dataObj = eval("(&q

  • ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息

    一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): 复制代码 代码如下: <span class="kwd">public<span class="pln"> <span class="typ">JsonResult<span class="pln"> <span class=&

  • asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数据

    第一次进入aspx页面,就要读取出大量数据.写入页面中.使用都在页面要有添删改的操作,而且只有当点击面的保存按钮才能真正的写入到数据库中.因此我选择了Ajax+JSON的方式来实现这个页面. 复制代码 代码如下: <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> <Scripts> <asp:ScriptRe

  • ASP.NET(AJAX+JSON)实现对象调用

    客户端: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ASP.NETA_JAX.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www

  • ASP.NET使用Ajax返回Json对象的方法

    一.新建一个html页面,如注册页面"Register.htm" <!DOCTYPE html> <html > <head> <title>用户注册</title> <meta charset="utf-8" /> <style type="text/css"> .msg { color:Red; } </style> </head> &

  • yii2使用ajax返回json的实现方法

    本文实例讲述了yii2使用ajax返回json的实现方法.分享给大家供大家参考,具体如下: public function actionAjax() { if(isset(Yii::$app->request->post('test'))){ $test = "Ajax Worked!"; // do your query stuff here }else{ $test = "Ajax failed"; // do your query stuff he

  • JQuery处理json与ajax返回JSON实例代码

    一.JSON的一些基础知识. JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"},对象的值是键值对的形式(key:value). "[]",标识数组,数组内部各个数据之间通过","分割,如["AreaId":"123","AreaId":"345"]. 很多情况下是

  • jQuery使用ajax传递json对象到服务端及contentType的用法示例

    本文实例讲述了jQuery使用ajax传递json对象到服务端及contentType的用法.分享给大家供大家参考,具体如下: 0.一般情况下,通过键值对的方式将参数传递到服务端 0.1 客户端代码: $.ajax({ url: 'TestHandler.ashx', type: 'post', data: { name: "admin", age: 10 }, dataType: 'text', success: function (data) { alert(data); } })

  • ThinkPHP通过AJAX返回JSON的两种实现方法

    本文实例讲述了ThinkPHP通过AJAX返回JSON的两种实现方法.分享给大家供大家参考.具体方法如下: 方法一: php代码如下: 复制代码 代码如下: $arr = array( 'name'=>$picname, 'pic'=>$pics, 'size'=>$size ); $this->ajaxReturn (json_encode($arr),'JSON'); JS部分代码如下: 复制代码 代码如下: var d=eval('('+d+')');//json转成obje

  • Struts2 Result 返回JSON对象详解

    如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持.但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况.本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的. Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串:2.使用Struts2对JSON的扩展.

  • ajax调用返回php接口返回json数据的方法(必看篇)

    php代码如下: <?php header('Content-Type: application/json'); header('Content-Type: text/html;charset=utf-8'); $email = $_GET['email']; $user = []; $conn = @mysql_connect("localhost","Test","123456") or die("Failed in conn

  • Python的Bottle框架中返回静态文件和JSON对象的方法

    代码如下: # -*- coding: utf-8 -*- #!/usr/bin/python # filename: todo.py # codedtime: 2014-8-28 20:50:44 import sqlite3 import bottle @bottle.route('/help3') def help(): return bottle.static_file('help.html', root='.') #静态文件 @bottle.route('/json:json#[0-9

  • struts2通过action返回json对象

    其实struts2通过action返回json挺简单的,但是就是老要忘,所以索性写在博客上.好的,开始. 首先是引入必须的jar包: struts2-json-plugin-2.3.24.jar 然后我们再写一个简单的action package com.mz.action; import com.mz.entity.User; import com.opensymphony.xwork2.ActionSupport; public class JsonAction extends Action

  • ajax获得json对象数组 循环输出数据的方法

    如下所示: var obj= [{id: 1, pId: 0, name: "采购商品", open: true}, {id: 2, pId: 1, name: "雨伞2", open: true}, {id: 2, pId: 1, name: "雨伞2", open: true}, {id: 2, pId: 1, name: "雨伞2", open: true}]; var x=''; $.each(obj, functio

随机推荐