深度优先

这个家伙好懒,除了文章什么都没留下

0%

简单的总结下AJAX的几个方法

之前只会使用$.Ajax()这个方法,但需要填的参数有点多。

今天花时间去学习了下Jquery中Ajax的一些其他的方法。

今天学习感觉收获挺大的。

以前都是通过ajax在一般处理程序的后台把前台界面的代码拼接好,然后通过回掉函数传给前台。

现在可以 用过JSON返回数据给前台,然后再 拼接html,在程序效率上肯定是比之前强很多的。

下面就来总结一下今天学习的吧:

一、post提交

url:发送请求地址。

data:待发送 Key/value 参数。

callback:发送成功时回调函数。

type:返回内容格式,xml, html, script, json, text, _default。

1
2
3
4
5
6
7
8
9
10
11
$("#btnPost").click(function () {
$.post("AjaxDemo.ashx",
{
"Action": "Post",
"UserName": "zhangsan",
"UserPwd": "123456"
},
function (data) {
alert(data);
}, "text")
});

二、get提交

其实和post在 写法和参数上并没有什么 不同的

1
2
3
4
5
6
7
8
9
10
11
$("#btnGet").click(function () {
$.get("AjaxDemo.ashx",
{
"Action": "Get",
"UserName": "zhangsan",
"UserPwd": "123456"
},
function (data) {
alert(data);
}, "text")
});

三、ajax提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$.ajax({
url: 'MyHandler/HdProSet.ashx',
contentType: 'post',
data: {
action: 'SelProAndSchool',
ProID: ProID,
ProName: ProName,
},
success: function (msg) {
$("#mytbody").empty();
$("#mytbody").append(msg);
del();
UpaProID();
},
error: function () {
alert("出错了!")
}
});

/***重点来了*****/

四、直接提交整个form表单数据

1
2
3
4
5
6
7
$("#btnForm").click(function () {
var form = $("#form1").serializeArray();
$.post("AjaxDemo.ashx", form,
function (data) {
alert(data);
}, "text")
});

五、返回一个json数据集

1
2
3
4
5
6
7
8
9
10
11
12
/*-----------------------------------------------------*/
$("#btnJson").click(function () {
$.post("AjaxDemo.ashx", { "Action": "Json" },
function (JsonData) {
var length = JsonData.length;
for (var i = 0; i < length; i++) {
alert(JsonData[i].SchoolID + "+" +
JsonData[i].SchoolName + "+" +
JsonData[i].Remarks);
}
}, "json")
});

六、将TableData转成JSON
引用:

1
2
3
using System.Collections;
using System.Collections.Generic;
using System.Web.Script.Serialization;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// <summary>
/// 将datatable转换为json
/// </summary>
/// <param name="dtb">Dt</param>
/// <returns>JSON字符串</returns>
public static string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow dr in dtb.Rows)
{
Dictionary<string, object> drow = new Dictionary<string, object>();
foreach (DataColumn dc in dtb.Columns)
{
drow.Add(dc.ColumnName, dr[dc.ColumnName]);
}
dic.Add(drow);
}
//序列化
return jss.Serialize(dic);
}

差不多这些了,后续再补充,睡觉!

用ajax+一般处理程序做 项目时,能使界面无刷新,异步请求数据,提高程序运行效率 ,减少网络流通等优点。

通常也涉及到做登陆功能时,需要将用户登陆信息存放在Session里面,一般处理程序没有继承这个类,直接使用会报错。

解决办法知道两种,一是将一般处理程序改成web界面处理程序,**.aspx,然后 可以 使用Session类

二,让一般处理程序继承

1.引用命名空间:using System.Web.SessionState;

2.实现接口: IReadOnlySessionState。

按照上面两点处理就能在一般处理程序中使用Session了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System.Web.SessionState;//导入命名空间

namespace CRM.MyHandler
{
/// <summary>
/// HdVerifycode 的摘要说明
/// 一般处理程序中要想用session,需要继承IRequiresSessionState这个
/// 然后context.Session["VerStr"]=。。。。这样写就行
/// 注意:要及时清空session里面的值
/// </summary>
public class HdVerifycode : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(msg);
}
/// <summary>
/// 验证登陆
/// </summary>
private string getLogin(HttpContext context)
{
context.Session["VerStr"] = null;
}

然后使用:context.Session[“XX”] = XXX

web处理程序和一般处理程序比较

两者的共同点
如果把aspx处理程序和ashx处理程序放到上图中,他们是处在相同的位置的,
他们都实现了IHttphandler接口。实现了IHttphandler才具备处理请求的能力

两者的不同点
微软对aspx下足了功夫,做了相当大的包装,里面含有控件,viewstate,还有自己的生命周期。
为了让开发人员更好的处理请求,微软采用了事件机制,让程序员可以在aspx的生命周期类 注入代码。
aspx是比ashx复杂的多的处理程序版本。

越复杂的包装,效率越低。所以简要的功能还是尽量使用一般处理程序吧。

设置方法很简单:安装扩展ClaudiaIDE

1、在这里下载扩展,https://visualstudiogallery.msdn.microsoft.com/9ba50f8d-f30c-4e33-ab19-bfd9f56eb817

2、然后双击即可完成安装。

之后重启VS,就可以看到编程背景上多了一个萌妹子,据说是一个日本人设计的VS虚拟形象,效果如下:

该插件的背景萌妹子图片位置在:

C:\Users{Username}\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\erz5o2hq.2em\background.png

觉得 这个 妹子 不好看,不够萌,没问题,可以自定义

网上去 下载一下喜欢的图片,当然有女神的用女神的岂不美哉,天天敲代码的时候可以YY下

最好是png背景透明的图片,设置背景图片幻灯片播放:

效果如下,每个 一分钟 换一张:

不喜欢萌妹子 的程序员 不是个好黑客!

改自:http://www.cnblogs.com/DarkInNight/p/5850082.html