在.net中,ajax如何调用本页数据源
近来我发现我一些同事,在用ajax时,用数据源,都喜欢重新新建一个页面.其实我是很不喜欢这种模式,主要原因,一是后期维护麻烦,还要去找哪些页面,二是不能调用一些本页原有的数据方法.因此我在这里做了一个测试的案例,在这里,我们有2种方法来掉用本页的数据源方法. 一种是webservice 方法. 那就是在本页里添加webservice 方法.如下
[webmethod]
public static string getword(string arg)
{
return "调用 webservice,值是"+arg;
}
这样就可以在客户端,前掉调用该方法了.如下
var sdata = "https://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.x/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 = https://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数据源
[csharp]
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;
}
}
作者:lxrj2008