问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Spring中ajax与后端传输数据的几种方式

发布网友 发布时间:2022-05-09 16:41

我来回答

2个回答

懂视网 时间:2022-04-23 04:32

这篇文章主要介绍了ajax数据传输方式,结合实例形式较为详细的分析总结了ajax数据传输的原理与传输文本、xml及json格式数据的具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了ajax数据传输方式。分享给大家供大家参考,具体如下:

在异步应用程序中发送和接收信息时,常见的可以选择以纯文本和XML作为数据格式(可参考《jQuery学习笔记之Ajax用法实例详解》),现在还有一种比较流行的方式:JSON(JavaScript Object Notation)。好了,下面举例说明这三种数据格式在ajax的异步应用。

一、纯文本方式

1、发送/接收数据:

Code is cheap.看代码:
testJs.js

几个附加文件源码:

jsTest.htm

<html>
<head>
<title>js test</title>
 <script src="js/testJs.js" type="text/javascript"></script> 
</head>
<body>
<form id="form1">
<p>
 用户名:<input id="txtUserName" name="txtUserName" type="text" /> 密码:<input id="txtPwd" name="txtPwd" type="password" onblur="validatePwd(this)" /></p>
</form>
</body>
</html>

AjaxOperations.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxOperations.aspx.cs" Inherits="WebTest2008.AjaxOperations" %>

AjaxOperations.aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebTest2008
{
 public partial class AjaxOperations : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!string.IsNullOrEmpty(Request["action"]) && Request["action"] == "chkPwd")
 {
 string responseTxt = "用户名和密码不匹配!";
 string tempStr = Request["userInfos"];
 /* 测试用 实际项目中可以对数据库进行检索等等相关操作,这里简化了 */
 if (tempStr.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries)[0] == "test" && tempStr.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries)[1] == "test")
 {
  responseTxt = "验证通过!";
 }
 Response.Write(responseTxt);
 }
 }
 }
}

一一保存文件,ctrl+F5,运行试试看吧。

上面这种方式是最简单最直接也是最有效的方式。熟练使用最佳。

二、XML方式

1、发送XML数据

testJs.js

jsTest.htm文件不变,AjaxOperations.aspx的HTML文件内容不变,服务器端.CS处理代码如下:

AjaxOperations.aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
namespace WebTest2008
{
 public partial class AjaxOperations : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!string.IsNullOrEmpty(Request["action"]) && Request["action"] == "xmlOp") // 处理xml
 {
 XmlDocument doc = new XmlDocument();
 try
 {
  doc.Load(Request.InputStream); //获取xml数据(这里需要注意接受xml数据的方法)
 }
 catch (Exception ex)
 {
  throw ex;
 }
 string responseTxt = "";
 string tempName = doc.SelectSingleNode("profile/userName").InnerText;
 string tempPwd = doc.SelectSingleNode("profile/userPwd").InnerText;
 if (tempName == "test" && tempPwd == "test")
 {
  responseTxt = "验证通过!";
 }
 else responseTxt = "验证失败!";
 Response.Write(responseTxt); // 写文本
 }
 }
 }
}

很简单的代码,运行看看吧。

2、接收XML数据:

我们看到,上面两个.js文件里处理返回数据时都用到了xmlReq.responseText的属性,下面我们试试看xmlReq.responseXML属性:

testJs.js

同样,jsTest.htm文件不变,AjaxOperations.aspx的HTML文件内容不变,服务器端.CS处理代码稍作修改如下:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
namespace WebTest2008
{
 public partial class AjaxOperations : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!string.IsNullOrEmpty(Request["action"]) && Request["action"] == "xmlOp") // 处理xml
 {
 XmlDocument doc = new XmlDocument();
 try
 {
  doc.Load(Request.InputStream); //获取xml数据
 }
 catch (Exception ex)
 {
  throw ex;
 }
 string responseXmlTxt = "";
 string tempName = doc.SelectSingleNode("profile/userName").InnerText;
 string tempPwd = doc.SelectSingleNode("profile/userPwd").InnerText;
 if (tempName == "test" && tempPwd == "test")
 {
  responseXmlTxt = "<?xml version="1.0" encoding="utf-8" ?> <msg>验证通过!</msg>"; // 测试用,简单的xml文件
 }
 else responseXmlTxt = "<?xml version="1.0" encoding="utf-8" ?><msg>验证失败!</msg>";
 Response.ContentType = ("text/xml;charset=UTF-8"); // 这里必须要设置,否则客户端接收不到这里写好的xml文件
 Response.Write(responseXmlTxt); // 写xml
 Response.End();
 }
 }
 }
}

好了,前面两种方法是大家平时开发中比较熟悉的方式,下面我们来看看第三种方式。

三、JSON方式

json的准备知识:

json是一种简单的数据格式,比xml更轻巧。json是JavaScript 的原生格式,这意味着在 JavaScript 中处理json格式的 数据不需要任何特殊的API 或工具包。json的语法规则其实很简单:对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。看个例子先:

上面的定义方式看起来很简单,但是如果字段众多,命名方式混杂,出错的概率大大增加,怎么办?这时候你就会想到用程序的方式生成json数据。json提供了json.js包,专门提供了几种常用的json处理函数。下载下来,(json.js点击此处本站下载。) ,将其引入然后就可以简单的使用object.toJSONString()转换成json数据。看代码:

也可以使用eval或者parseJSON()方法来转换json数据到object:

关于json.js的学习,请参考网上其他资源,这里我不再赘述了。说了这么多,实践环节开始了:

ajax利用json发送/接收数据:

附加文件,AjaxOperations.aspx的html页面没有改变,AjaxOperations.aspx.cs代码稍作调整如下:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebTest2008
{
 public partial class AjaxOperations : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!string.IsNullOrEmpty(Request["action"]) && Request["action"] == "jsonOp") // 处理JSON
 {
 string responseJsonTxt = "";
 string tempStr = Request["sendStr"].Trim(new char[] { '{', '}' }); // 在服务器上解释JSON需要引用一个能够转化JSON的组件:Json.Net,这里简单测试,略过Json.Net
 if (tempStr.Split(new char[] { ',' })[0].Split(new char[] { ':' })[1] == ""test"" && tempStr.Split(new char[] { ',' })[1].Split(new char[] { ':' })[1] == ""test"")
 {
  responseJsonTxt = "{"msg":"验证通过!"}"; // 测试用
 }
 else responseJsonTxt = "{"msg":"验证失败!"}";
 Response.Write(responseJsonTxt);
 Response.End();
 }
 }

jsTest.html引入json.js文件(必须下载json.js文件,否则js报错),如下:

<html>
<head>
 <title>js test</title>
 <script src="js/json.js" type="text/javascript"></script>
 <script src="js/testJs.js" type="text/javascript"></script>
</head>
<body>
 <form id="form1">
 <p>
 用户名:<input id="txtUserName" name="txtUserName" type="text" />
 密码:<input id="txtPwd" name="txtPwd" type="password" onblur="validatePwd(this)" /></p>
 </form>
</body>
</html>

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

基于ajax的简单搜索实现方法

js与jQuery终止正在发送的ajax请求的方法

ajax调用中ie缓存问题解决方法

热心网友 时间:2022-04-23 01:40

后台解析ajax传递的数据,这主要看前端传递数据的格式,主要有以下几种常见的。
1、前端ajax传递表单数据,类似{name:'zhangsan',age:'17'}
后台只需利用request.getParameter("name")形式即可获取对应的value值。
2、前端传递json数据格式。后台可以直接获取json字符串,然后利用相关的API转成对应的Java对象。或者直接利用springMvc的注解@RequestBody注解。
@RequestMapping(value = "/save")
public void save(@RequestBody User user){

}
这样传递的json数据会自动封装成user对象。
如果当前传递的是一个json数组,则后端可以定义一个VO对象,vo对象中存放一个userList。
public class UserVO{
private List<User> dataList;

}
@RequestMapping(value = "/save")
public void save(@RequestBody UserVO userVO){
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桥本氏甲亢化验单说明什么 桥本氏甲亢??检验报告严重么 华为Y325-T00手机不小心设置英文版怎么办? 腾讯手游助手怎么双开 腾讯手游助手能双开吗 腾讯手游助手怎么双开-腾讯手游助手双开教程 审计定义的理解是什么 全国各地还有谁叫刘超啊 ? 滑冰滑冰场 彭水火车站到重庆北火车站有的少公里一 彭水到重庆坐火车要几个小时 如何选择和评价前端ajax异步渲染与后端mvc渲染? ajax前端传什么后台mvc用list接收 乐唯四轮电动汽车电锁线怎样连接? 摩托车电门锁4线怎么接,原理。 UU125电门锁五线图解钥匙掉了,线怎么接才能开 摩托车电热手把,应该接电门锁哪两根线? 弯梁车电门锁两条线要接四条线怎么接 长城风骏三显示屏的保险丝是多少A的 如何修理显示器保险丝 显示器有保险丝吗 长城电脑显示器的保险丝在哪里? 19寸冠捷显示器保险管在哪? 显示器保险丝在哪个位置 惠普显示器保险丝在那个位置 13款逸动显示屏的保险丝在哪? 32英寸创维电视机指示灯不亮,怀疑是保险丝烧了,保险丝在哪里呢怎么找不到啊? 废铁收割机显示屏保险丝在哪 蒙迪欧致胜中控显示屏保险在哪里 显示器保险丝大约在哪个位置 测试方法与样品测试 web前端开发,访问网络是用ajax吗???那jquery是干什么的 手机号码实名制之后那个人就可以随便查看这个手机号码的通话记录和短信记录和内容么? 怎么做吹泡泡的水 刚做好的千张用沸水泡一下可以保存时间更长吗 和德国人聊天需要注意些什么? 德国人见面时爱聊什么 与德国人交流谈论哪些话题好 准备去德国了,能跟他们聊些什么?有跟德国人聊得来的进 和德国人吃饭说什么好啊 和德国人聊天有什么禁忌?这种问题可以问吗 请教各位大侠,德国客户一般都有什么特点 跟一德国人聊天 德国人为什么会将足球作为打招呼的话题? 了解德国人的,最好有德国生活经验的来~~ 德国待人热情、好客,宴席上男子为何要坐在妇女和地位高的人的左侧? NAT工作在OSI的第几层呢? 路由器上的NAT工作在哪一层 关于Windows Server 2003的NAT防火墙的配置 NAT配置方法(IOS) NAT的特性及应用场合?