原生态ajax 传递json参数到服务器端
案例说明:通过ajax将用户名和密码以json形式传递给服务器端,然后服务器端接受数据,进行处理返回json数据到前端
首先,在客户端,通过JavaScript脚本将页面表单数据封装成JSON格式。LoginAjax()函数完成了这一功能。然后我们通过ajax将数据发送到服务端的login.ashx。其中用到了JSON.stringify()方法,它可以将客户端发送的JSON数据对象进行序列化操作,详细的内容可以看这里https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
//通过ajax调用后台服务端程序,进行数据校验
function LoginAjax(accountName, password) {
var httphtml; if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
httphtml = new XMLHttpRequest();
} else {
// code for IE6, IE5
httphtml = new ActiveXObject("Microsoft.XMLHTTP");
} if (!httphtml) {
alert("httphtml异常");
returnfalse;
}
//将账户名和密码进行编码传递,放置数据乱码 //方法一,通过问号传递
// httphtml.open("POST", "Login.ashx?accountName=" + encodeURI(accountName) + "&password=" + encodeURI(password), false);
var postData = { "accountName": accountName, "password": password };
//异步 - True 或 False?
httphtml.open("POST", "Login.ashx", true);
httphtml.onreadystatechange = function () { /*
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
*/
if (httphtml.readyState == 4) {
/*
200: "OK"
404: 未找到页面
*/
if (httphtml.status == 200) {
//将ajax请求处理后返回的值显示出来
var value = httphtml.responseText;
//函数eval对json格式字符串进行反序列化操作。
var obj = eval("(" + value + ")");
if (obj.state == "1") {
alert(obj.msg);
}
else {
alert(obj.msg);
} } else {
alert("ajax请求错误!");
}
} }
//有两种办法处理:第一种方式是 用来将对象序列化为JSON字符串(JSON.stringify()), //第二种方式是直接用双引号包裹起来,比如data: "{'accountName':'foovalue', 'password':'barvalue'}"。
var data = JSON.stringify(postData);
//将请求发送到服务器。参数string仅用于POST请求;
httphtml.send(data);
}
Login.ashx服务端接收返回
/// <summary>
/// Login 的摘要说明
/// 用户名默认 admin
/// 密码默认 123456
/// </summary>
public class Login : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
var data = context.Request;
var sr = (new StreamReader(data.InputStream)).ReadToEnd();
var javaScriptSerializer = new JavaScriptSerializer();
User PostedData = javaScriptSerializer.Deserialize<User>(sr); string returnValue = "error";
//校验用户名和密码是否为空
if (!string.IsNullOrEmpty(PostedData.accountName) && !string.IsNullOrEmpty(PostedData.password))
{
//
//备注:通过ajax传递参数进行编码方式乱码
//将获取的值进行解码
string accountName = PostedData.accountName;// System.Web.HttpUtility.UrlDecode(context.Request["accountName"].ToString());
string password = PostedData.password;// System.Web.HttpUtility.UrlDecode(context.Request["password"].ToString());
if (!accountName.Equals("admin"))
{
returnValue = "{\"state\":\"0\",\"msg\":\"账号不正确\"}"; //"账号不正确!";
}
else if (!password.Equals(""))
{
returnValue = "{\"state\":\"0\",\"msg\":\"密码不正确\"}"; //"密码不正确";
}
else
{
returnValue = "{\"state\":\"0\",\"msg\":\"恭喜你,登录成功\"}"; ;
}
}
context.Response.Write(returnValue);
} public bool IsReusable
{
get
{
return false;
}
}
}
public class User {
public string accountName { get; set; }
public string password { get; set; }
}
原生态ajax 传递json参数到服务器端的更多相关文章
- ajax传递json参数
var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- ajax 传递数组参数
一.ajax 传递数组参数 需要添加: traditional: true, let typeIDArr = [,,,,,]; var that = this; var url = '@Url.Act ...
- Ajax传递json数据简介和一个需要注意的小问题
Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...
- 用ajax传递json,返回前台的中文乱码问题
java项目中用ajax传递json,返回前台时中文出现问号(乱码问题)的解决办法 首先看一下没有解决前的状态: 我用的框架是ssm,在springMVC中我配置了编码格式为utf-8,每个jsp页面 ...
- boke例子: freermarker:在使用ajax传递json数据的时候多出冒号
boke例子: freermarker:在使用ajax传递json数据的时候多出冒号 json数据是用JSON.stringify()格式化的数据,然后用ajax传递,发现数据多出一个冒号:, 后来度 ...
- Ajax传递的参数如何在浏览器中查看
如图当需要在浏览器中知道Ajax传递的参数可以,点击浏览器的右键检查,点击XHR,此时要记得提交带有参数的Ajax页面, 这样才可以显示出来传递的参数
- jq ajax传递json对象到服务端及contentType的用法
目录 0.一般情况下,通过键值对的方式将参数传递到服务端 1.ajax 传递复杂json对象到服务端 2.content-Type 对asp.net mvc项目的重要性 0.一般情况下,通过键值对的方 ...
- ajax传递array参数
var ticketId = new Array(); for(var i = 0; i < checkboxes.length; i++) { ticketId.push(checkboxes ...
随机推荐
- 自定义响应结构 Json格式转换 工具类
import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterx ...
- 王爽 <<汇编 语言>> 13.6 BIOS中断例程应用
;名称:ILOVEU程序 ;使用BIOS提供的中断例程 assume cs:code code segment main: ;显示背景22*80 ;dh中放行号 ;dl中放列号 bibi: push ...
- Python + Selenium 实现登录Office 365
最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...
- C# SqlBulkCopy
public void Insert_Table(System.Data.DataTable dataTable) { try { ...
- 使用keepalived实现mysql主从复制的自动切换
最近测试了一下mysql+keepalived实现主从自动切换,主从都需要安装keepalived,使用vip漂移实现主从自动切换,这里主要记录的是keepalived的文件配置. 这里mysql搭建 ...
- postgresql修改最大连接数
1.合适的最大连接数 used_connections/max_connections在85%左右2.修改最大连接数postgresql最大连接数默认为1001)打开postgresql配置文件vim ...
- elasticsearch【cat API,系统数据】指令汇总
本博文讲述的ES获取系统数据的API是基于Elasticsearch 2.4.1版本的. 0. overview a. 下面将要介绍的所有的指令,都支持一个查询参数v(verbose),用来显示详细的 ...
- E 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
最熟悉的陌生人 作者:张慧桥 枪与玫瑰” 负责审讯的兄弟真是好样的,回来后的第四天上午就让黄志深那小子招了出来. 这可真的不容易! 现在公安部对我们审讯工作有很多的规定,其中一条就是不准刑讯逼供,就是 ...
- Python入门3
字典 字典四种创建方法: 1. dic = dict() print(dic) # 相当于 dic1 = {} print(dic1) # 输出 {} {} 2. dic = dict(one=1, ...
- 关于使用TP-Link桥接小米路由器
家里因为有个小卧室,小卧室的写字台上面放了一台台式电脑,而我又不想用台式电脑牵一条长线到客厅的网口或者路由器上面,因为太麻烦,所以我使用了TPLink的无线USB插在了我的主机USB上,略去TPLIN ...