近来我发现我一些同事,在用ajax时,用数据源,都喜欢重新新建一个页面.其实我是很不喜欢这种模式,主要原因,一是后期维护麻烦,还要去找哪些页面,二是不能调用一些本页原有的数据方法.因此我在这里做了一个测试的案例,在这里,我们有2种方法来掉用本页的数据源方法. 一种是webservice 方法. 那就是在本页里添加webservice 方法.如下
[WebMethod]
public static string GetWord(string arg)
{
return "调用 webService,值是"+arg;
}
这样就可以在客户端,前掉调用该方法了.如下
var sdata = "http://www.cnblogs.com/incubator/archive/2011/12/09/{arg:'" + $("#txtVal").val() + "'}";
$.ajax({
type: "POST",
contentType: "application/json;utf-8",
data: sdata,
// dataType: "json",
url: "Default.aspx/GetWord",
success: function (msg) {
// debugger;
// var json = eval('(' + msg + ')');
alert(msg.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger;
alert("ok");
// 通常 textStatus 和 errorThrown 之中
// 只有一个会包含信息
// this; // 调用本次AJAX请求时传递的options参数
}
第二种是通过参数,来控制,是否调用数据源方法.
后台代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string methor = Request["act"];
if (!string.IsNullOrEmpty(methor))
{
this.GetType().GetMethod(methor).Invoke(this,null);
}
}
public void GetVal()
{
string val = "getVal 方法获取参数" + Request["arg"];
Response.Clear();
Response.Write(val);
Response.End();
}
这样也是一种好的数据源调用方法
在前台代码如下:
var data = http://www.cnblogs.com/incubator/archive/2011/12/09/new Object();
data.act = "GetVal";
data.arg = $("#txtVal").val();
$.post("Default.aspx", data, function (data) { alert(data); });
这是本人一些心得体会,希望大家多多交流,看看还有没有更好的方法来实现写ajax数据源
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string methor = Request["act"]
if (!string.IsNullOrEmpty(methor))
{
this.GetType().GetMethod(methor).Invoke(this,null);
}
}
public void GetVal()
{
string val = "getVal 方法获取参数" + Request["arg"];
Response.Clear();
Response.Write(val);
Response.End();
}
[WebMethod]
public static string GetWord(string arg)30
{
return "调用 webService,值是"+arg;
}
}