Asp.net可以在aspx页面中添加ScriptManager,这样就允许将WebMethod添加在aspx页面中,而以往通常都是新建asmx文件,利用webservice提供webmethod供请求。这里列出利用ajax请求aspx页面中的webmethod的方法,当然也可以利用ScriptManager创建的PageMethods的js对象直接访问后台代码中的webmethod。
linktest.aspx代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="linktest.aspx.cs" Inherits="linktest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <script type="text/javascript" src="MyJs/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="MyJs/jquery.json-2.3.min.js"></script> <script type="text/javascript"> function g() { var flag = false; $.ajax({ type: "POST", async: false, url: "linktest.aspx/InsertComment", //data: $.toJSON({ "thecontent1": 'hello' }), data: window.JSON.stringify({ "thecontent1": 'hello' }), contentType: "application/json; charset=utf-8", dataType: "json", error: function() { alert('出错了'); }, success: function(json) { if (json.d) { alert("successs"); flag = true; } else { alert("kao"); } } }); return flag; } function f() { $.ajax({ type: "POST", async: true, url: "linktest.aspx/GetJsonObject", data: $.toJSON({ "p": 'hello' }), //data: window.JSON.stringify({ "thecontent1": 'hello' }), contentType: "application/json; charset=utf-8", dataType: "json", error: function() { alert('出错了'); }, success: function(json) { alert("" + json.d.key1 + json.d.keyofarray[2] + json.d.keyofobject.subkey); } }); } function h() { //不通过ajax,直接通过scriptmanager访问后台的pagemethod PageMethods.TestMethod("dlut", OnSucceeded1, OnFailed); //后两个参数为请求成功和失败的回调函数 } function OnSucceeded1(result, userContext, methodName) { if (methodName == "TestMethod") { alert(result); } } function OnFailed(error, userContext, methodName) { if (error !== null) { alert("error.."); } } </script> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="sm1" EnablePageMethods="true" runat="server" /> <div> <a href="http://www.baidu.com" target="_blank" onclick="return g();">Go to baidu..</a> <br /> <a href="http://www.sina.com.cn" target="_blank" onclick="f();">Go to sina..</a> <br /> <input type="button" onclick="h();" value="Request PageMethod" /> </div> </form> </body> </html>
这里写了3个测试,前两个是通过Jquery的ajax,最后一个直接通过PageMethods请求pagemethod。要知道,aspx后台要想在新标签页中打开一个链接可有点不容易,这里利用A标签onclick里Ajax请求,如果onclick返回false,则不会跳转。
还要注意的是$.ajax的data参数,因为设置成了json格式,所以利用$.toJSON将js对象转换成json对象,其实用window.JSON.stringify也行,但是这个不是所有浏览器都奏效。
前台往后台传参数这样将js对象转换成json就行,只要里面的属性和后台的webmethod的参数对应就行,如果后台的webmethod的参数是一个C#对象,同样的,只要js对象的属性和C#对象的属性对应就可以了。
还要注意的就是ajax的async标志,这个很好理解。前台得到返回结果以后取得返回值记住是在json.d下。
后台代码linktest.aspx.cs代码如下:
using System; using System.Collections; using System.Configuration; using System.Data; 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; public partial class linktest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Session["test"] = "hey"; } } [System.Web.Services.WebMethod] public static bool InsertComment(string thecontent1) { return thecontent1.Equals("hello"); } [System.Web.Services.WebMethod] public static string TestMethod(string p) { return p + " data from back.."; } [System.Web.Services.WebMethod] public static SortedDictionary<string, object> GetJsonObject(string p) { SortedDictionary<string, object> results = new SortedDictionary<string, object>(); results.Add("key1","value1"); results.Add("key2", p); results.Add("keyofarray",new int[]{1, 2, 3}); SortedDictionary<string, object> subitem = new SortedDictionary<string, object>(); subitem.Add("subkey","hah"); results.Add("keyofobject", subitem); return results; } [System.Web.Services.WebMethod(EnableSession=true)] public static SortedDictionary<string, object> ObjectParameterTest(Books p) { SortedDictionary<string, object> results = new SortedDictionary<string, object>(); results.Add("key1", p.bookTitle); results.Add("key2", HttpContext.Current.Session["test"].ToString() ); return results; } }
最后一个ObjectParameterTest方法的参数是一个C#对象,前台传递的时候只要json的属性跟它对应就可以了。这里还展示了怎样取到session。
相关推荐
本文将详细讲解如何在ASP.NET中实现aspx页面与aspx.cs文件之间的函数互调,以及在此过程中需要注意的关键点。 首先,我们需要理解ASP.NET的生命周期。一个ASP.NET Web Form页面的生命周期包括初始化、加载、回发...
总的来说,这个案例将展示如何在ASP.NET ASPX页面中集成C#和Ajax技术,通过UpdatePanel实现页面的局部更新,并通过Web服务或PageMethod处理客户端请求,返回JSON数据,以此提高Web应用的交互性和效率。理解并掌握...
根据给定文件的信息,我们可以提炼出以下IT领域的关键知识点,主要围绕VBS脚本、HTTP请求、XMLHTTP对象以及与ASPX页面交互的过程。 ### VBS脚本与HTTP请求 VBS(Visual Basic Script Edition)是一种轻量级的脚本...
为了解决这一问题,我们可以通过在*** WebForm页面的后端代码(.aspx.cs文件)中定义WebMethod,以此来简化Ajax的处理过程。WebMethod允许我们在C#中创建一个公开的静态方法,并通过WebMethod属性标记,使其能够接收...
- PageMethod是一种特殊的WebMethod,它不需要创建***的Web服务(.asmx)文件,而是直接在ASPX页面中编写。 - NET2.0是微软推出的一个基于.NET框架的开发平台版本,它包含许多用于Web开发的API和工具。 - 通过...
该函数会在用户点击某一行时触发,向服务器端发送POST请求,获取指定ID对应的项目列表,并更新页面上的`#ProjectList`元素。 #### 3. 服务器端方法 服务器端提供了一个名为`GetProjectByUnitId`的方法来处理客户端...
此“ajax 插入 删除功能_aspx开发教程”着重讲解如何利用Ajax来实现在Web页面上动态地插入和删除数据,而无需完全刷新整个页面。在ASP.NET中,Ajax功能主要通过jQuery库以及ASP.NET AJAX控件来实现。 1. **jQuery库...
在ASP.NET中,你可以创建一个与ASPX页面对应的后台类,将业务逻辑和页面逻辑分离。通过Ajax调用,可以在不重新加载整个页面的情况下调用这些后台方法,提高性能。例如,使用`PageMethods`或者`UpdatePanel`的`...
对于每个按钮点击事件,我们使用 `$.ajax()` 发送一个 POST 请求到指定的 URL(这里是 "JqueryCSMethodForm.aspx" 后跟特定的方法名)。`dataType` 参数设置为 "json" 表示我们期望服务器返回 JSON 格式的响应数据,...
然后,可以在aspx页面上添加TextBox和AutoCompleteExtender控件: ```asp <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:TextBox ID="txtSearch" runat="server"></asp:...
4. **WebMethod或PageMethod**:在ASP.NET中,可以创建WebMethod或PageMethod来处理来自客户端的AJAX请求。这些方法通常定义在ASP.NET的后台代码中,接收并处理拖动事件的数据,然后返回结果。 5. **异步通信**:...
在ASP.NET中,我们可以用它来处理特定的任务,如数据检索或处理,而不像`.aspx`页面那样需要完整的页面生命周期。 在AJAX交互中,前端JavaScript通常负责发起异步请求,而`.ashx`文件接收并处理这些请求。以下是...
接下来,我们需要在Default.aspx前端页面上实现Ajax调用。在HTML部分,添加一个按钮和一个用于显示结果的区域: ```html 获取数据 <div id="result"></div> ``` 然后,使用JavaScript和jQuery库来实现Ajax请求。...
url: "Default.aspx/HelloWorld", contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { alert(response.d); }, error: function (xhr, status, error) { ...
为了实现动态加载数据,我们需要在Aspx页面中编写逻辑,处理Ajax请求并返回新的数据。通常,这涉及到创建一个WebMethod或使用ASP.NET MVC的控制器方法来接收Ajax请求。 Ajax技术使得网页无需刷新即可获取新数据,...
当AJAX请求完成后,UpdatePanel会自动更新其内容,而无需整个页面重绘。 总的来说,利用AJAX.NET在静态页面中实现无刷新效果,不仅提升了用户体验,也降低了服务器负担。不过需要注意的是,虽然AJAX提供了更好的...
例如,我们可以创建一个名为`CheckCode.aspx.cs`的页面,包含以下C#代码: ```csharp [WebMethod] public static bool CheckCode(string inputCode) { // 假设验证码存储在Session中 string correctCode = ...
这个方法可能在 ASPX 页面中定义,或者在代码-behind 类中定义为 `WebMethod`。例如: ```csharp [WebMethod] public static string GetData() { // 获取和处理数据 return "返回的数据"; } ``` 请求的 URL 将...
3. `newAjax.aspx.cs`: 这是C#后端代码,与`newAjax.aspx`页面关联,用于处理来自客户端的请求,包括Ajax请求。在这里,开发人员可能定义了处理Ajax请求的方法,如异步操作,数据处理,以及返回响应。 4. `areal....
3. **WebMethod 和 JavaScript**:如果使用Web服务(WebMethod)异步处理请求,可以在客户端通过JavaScript调用这些方法,并在调用前后显示/隐藏loading。 通过以上方法,无论是JavaScript还是ASP.NET,都可以有效...