如何使用jquery访问aspx后台中的方法
时间:2010-09-10 来源:孙华勇
首先我要说,jquery与后台的交互,最佳选择是webservice。而不是访问页面中的某一个方法。
因为前段时间为这个问题纠结了很久。有人说可以有人说不可以。为此进行了一番争论。最终结果是:可以。
CS代码 //其他无关引用已经删除
using System.Web.Services;
namespace ZYWeb
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string f()
{
return "hello from server";
}
}
}
代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ZYWeb._Default" %>
<!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">
<title>无标题页</title>
<!--这里是导入jquery库,请根据自己的实际情况来写-->
<script type="text/javascript" src="Scripts/J.js"></script>
<script type="text/javascript">
$
(
function()
{
$("#bt").click
(
function()
{
$.ajax
(
{
type:"post",
url:"default.aspx/f",/*页面地址/方法名称,和使用webservice的方法是一样的*/
contentType:"application/json",
success:function(a)/*a是返回的数据。json*/
{
alert(a.d);
}
}
)
}
)
}
)
</script>
</head>
<body>
<form id="form1" runat="server">
<input type="button" value = "click" id="bt"/>
</form>
</body>
</html>
需要调用的方法要加上[WebMethod]标记
有人说后台要调用的方法必须是静态方法,这一点还没来得及验证。希望验证过的朋友给个准。
js中,有人说,如果没有参数,data也必须写,写成data:"{}",
经过验证,并不是必须的。没有参数时,可写可不写。
包含参数的还没有验证。
有人说只有asp.net3.5中才可以这样使用。但是经过实际操作,已经验证3.5,2.0都可以使用此方法。只不过2.0中还需要修改配置文件,其他地方都一样。
代码 <?xml version="1.0"?><configuration>
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
</configuration>
相关阅读 更多 +