一、介绍.net中异步调用的不同实现方式 首先新建一个html页面
(1)、第一种普通的webform窗体页
新建一个webform把aspx页面的HTML代码去掉,留住第一行
<%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"true" CodeBehind&#61;"AjaxPage.aspx.cs" Inherits&#61;"WebApplication1.AjaxPage" %>
后台cs文件代码&#xff1a;
protected void Page_Load(object sender, EventArgs e)
{
string type &#61; HttpContext.Current.Request.Form["type"];
if(type&#61;&#61;"getData01")
HttpContext.Current.Response.Write("AjaxPage.aspx/Ajax Frame No.1");
}
(2)、第二种单独的aspx页面和一个cs文件
aspx文件中的代码<%&#64; Page Inherits&#61;"命名空间.刚才的那个cs文件名" %>
前台&#xff1a;
$.post(&#39;Ajax.aspx&#39;, { type: &#39;getData01&#39; }, function (re) {
$(&#39;#re_method02&#39;).html(re);
});
后台&#xff1a;
public Ajax()
{
string type &#61; HttpContext.Current.Request.Form["type"];
if(type&#61;&#61;"getData01")
HttpContext.Current.Response.Write("Ajax.aspx/Ajax Frame No.1");
}
(3)、第三种是ashx一般处理程序的文件
这里主要知识点就是继承了IHttpHandler接口。来实现Http web相关的事件处理。
实现方法&#xff1a;新建后注销掉context.Response.Write("Hello World");改为你的事件处理代码即可。
(4)、第四种利用System.Web.Services.WebMethodAttribute
在&#xff08;1&#xff09;的基础上引用命名空间using System.Web.Services;然后在需要异步执行的方法上添加[WebMethod]属性
前台&#xff1a;
$.ajax({
type: "POST", //访问WebService使用Post方式请求
contentType: "application/json",
url: "AjaxWebService.aspx/HandlerEvent01", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
data: "{&#39;para&#39;:&#39;bill&#39;,&#39;para2&#39;:&#39;28&#39;}", //这里是要传递的参数&#xff0c;格式为 data: "{paraName:paraValue}" 需要注意参数名跟后台方法参数名对应
dataType: &#39;json&#39;, //WebService 返回Json类型 或者 Json/string
success: function (re) {
$(&#39;#re_method04&#39;).html(re.d);
}
});
后台&#xff1a;
[WebMethod]
public static string HandlerEvent01(string para, string para2)
{
return "AjaxWebService.aspx/Ajax Frame No.4";
}
可返回json或者string.返回的数据格式为 {"d":你的数据}。这也是为什么我们前台取值的时候会是re.d。通常我们返回的数据类型可以为&#xff0c;普通字符串&#xff0c;自定义对象&#xff0c;泛型列表&#xff0c;我们看看返回不同类型数据时前端json数据的格式
1.返回字符串
json:{"d":"字符串"}
2.返回类型为自定义对象, 前端返回值为一个对应的JSON对象
json:{"d":{"name1":"value1","name2":"value2"...}}
3&#xff0c;返回类型为泛型列表&#xff0c; 前端返回值为对应的JSON对象数组。
如果我们异步就是需要返回json格式数据&#xff0c;这样就很方便。同时&#xff0c;除了以WebService的方式被调用&#xff0c;这个页面也可以以普通URL的方式来异步访问&#xff0c;也就是&#xff08;1&#xff09;的情况。
&#xff08;5&#xff09;调用webservice
&#xff08;6&#xff09;MVC中的Ajax异步实现
1.直接在控制器中写public string Ajax(){return "re";}方法&#xff0c;不用额外建视图文件。
2.或者你要返回的内容结构还比较复杂&#xff0c;新建一个_Ajax.cshtml分部视图。控制器中代码&#xff1a;
public ActionResult Ajax() {
//...your code...
return PartialView("_Ajax");
}
前台调用代码&#xff1a;
$.post("/控制器名/ajax" , { type:&#39;getData01&#39; },function(re){
$(&#39;#re_method01&#39;).html(re);
});
Demo源码&#xff1a;下载