首頁 後端開發 C#.Net教程 ASP.NET使用Ajax如何回傳Json物件的方法具體介紹

ASP.NET使用Ajax如何回傳Json物件的方法具體介紹

May 28, 2017 am 10:12 AM

這篇文章主要介紹了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: &#39;GET&#39;, //自动会把json对象转换为查询字符串附在url后面如:http://localhost:49521/Register.ashx?id=a&pwd=b&name=c
      url: url,
      dataType: &#39;json&#39;, //要求服务器返回一个json类型的数据,如:{"success":true,"message":"注册成功"}
      contentType: &#39;application/json&#39;,//发送信息给服务器时,内容编码的类型
      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++) {
            $(&#39;#&#39; + 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,並複製引用

下載解壓縮後將“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物件的方法具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

解決jQuery AJAX請求遇到403錯誤的方法 解決jQuery AJAX請求遇到403錯誤的方法 Feb 20, 2024 am 10:07 AM

標題:解決jQueryAJAX請求出現403錯誤的方法及程式碼範例403錯誤是指伺服器禁止存取資源的請求,通常會導致出現這個錯誤的原因是請求缺少權限或被伺服器拒絕。在進行jQueryAJAX請求時,有時會遇到這種情況,本文將介紹如何解決這個問題,並提供程式碼範例。解決方法:檢查權限:首先要確保請求的URL位址是正確的,同時驗證是否有足夠的權限來存取該資

PHP 與 Ajax:建立一個自動完成建議引擎 PHP 與 Ajax:建立一個自動完成建議引擎 Jun 02, 2024 pm 08:39 PM

使用PHP和Ajax建置自動完成建議引擎:伺服器端腳本:處理Ajax請求並傳回建議(autocomplete.php)。客戶端腳本:發送Ajax請求並顯示建議(autocomplete.js)。實戰案例:在HTML頁面中包含腳本並指定search-input元素識別碼。

PHP 數組轉 JSON 的效能最佳化技巧 PHP 數組轉 JSON 的效能最佳化技巧 May 04, 2024 pm 06:15 PM

PHP數組轉JSON的效能最佳化方法包括:使用JSON擴充和json_encode()函數;新增JSON_UNESCAPED_UNICODE選項以避免字元轉義;使用緩衝區提高循環編碼效能;快取JSON編碼結果;考慮使用第三方JSON編碼庫。

MySQL5.7和MySQL8.0的差別是什麼? MySQL5.7和MySQL8.0的差別是什麼? Feb 19, 2024 am 11:21 AM

MySQL5.7和MySQL8.0是兩個不同的MySQL資料庫版本,它們之間有以下一些主要差異:效能改進:MySQL8.0相對於MySQL5.7有一些效能改進。其中包括更好的查詢優化器、更有效率的查詢執行計劃產生、更好的索引演算法和平行查詢等。這些改進可以提高查詢效能和整體系統效能。 JSON支援:MySQL8.0引入了對JSON資料類型的原生支持,包括JSON資料的儲存、查詢和索引。這使得在MySQL中處理和操作JSON資料變得更加方便和有效率。事務特性:MySQL8.0引進了一些新的事務特性,如原子

解決jQuery AJAX請求403錯誤的方法 解決jQuery AJAX請求403錯誤的方法 Feb 19, 2024 pm 05:55 PM

jQuery是一個受歡迎的JavaScript函式庫,用來簡化客戶端端的開發。而AJAX則是在不重新載入整個網頁的情況下,透過發送非同步請求和與伺服器互動的技術。然而在使用jQuery進行AJAX請求時,有時會遇到403錯誤。 403錯誤通常是伺服器禁止存取的錯誤,可能是由於安全性原則或權限問題導致的。在本文中,我們將討論如何解決jQueryAJAX請求遭遇403錯誤

Jackson庫中註解如何控制JSON序列化和反序列化? Jackson庫中註解如何控制JSON序列化和反序列化? May 06, 2024 pm 10:09 PM

Jackson庫中的註解可控制JSON序列化和反序列化:序列化:@JsonIgnore:忽略屬性@JsonProperty:指定名稱@JsonGetter:使用獲取方法@JsonSetter:使用設定方法反序列化:@JsonIgnoreProperties:忽略屬性@ JsonProperty:指定名稱@JsonCreator:使用建構子@JsonDeserialize:自訂邏輯

如何解決jQuery AJAX報錯403的問題? 如何解決jQuery AJAX報錯403的問題? Feb 23, 2024 pm 04:27 PM

如何解決jQueryAJAX報錯403的問題?在開發網頁應用程式時,經常會使用jQuery來發送非同步請求。然而,有時在使用jQueryAJAX時可能會遇到錯誤代碼403,表示伺服器禁止存取。這種情況通常是由伺服器端的安全性設定所導致的,但可以透過一些方法來解決這個問題。本文將介紹如何解決jQueryAJAX報錯403的問題,並提供具體的程式碼範例。一、使

如何使用Ajax從PHP方法取得變數? 如何使用Ajax從PHP方法取得變數? Mar 09, 2024 pm 05:36 PM

使用Ajax從PHP方法取得變數是Web開發中常見的場景,透過Ajax可以實作頁面無需刷新即可動態取得資料。在本文中,將介紹如何使用Ajax從PHP方法中取得變量,並提供具體的程式碼範例。首先,我們需要寫一個PHP檔案來處理Ajax請求,並傳回所需的變數。下面是一個簡單的PHP檔案getData.php的範例程式碼:

See all articles