asp.net使用母版页中使用ajax脚本取数据
程序员文章站
2024-03-08 11:24:40
方法如下: 1、 页面中拖入scriptmanager。以便于使用ajax脚本。同时放在其它客户端控件,用于触发netpost方法。这里不列出客户端控件。 复制代码 代...
方法如下:
1、 页面中拖入scriptmanager。以便于使用ajax脚本。同时放在其它客户端控件,用于触发netpost方法。这里不列出客户端控件。
<asp:scriptmanager id="smmaster" runat="server" scriptmode="auto" enablepagemethods="true">
</asp:scriptmanager>
2、在master源码中编写js
function netpost() {
//创建实例
var wrequest = new sys.net.webrequest();
//设置请求url
wrequest.set_url("../checkstate/checknetstate.aspx");
//定义参数
var body = "ip=192.168.1.1";
//设置参数
wrequest.set_body(body);
//设置请求方式
wrequest.set_httpverb("post");
//请求完成处理函数
wrequest.add_completed(postnet);
//执行请求
wrequest.invoke();
}
function postnet(exector, eventargs) {
//执行器的状态e :responseavailable、aborted 或 timedout。
//仅当 responseavailable 返回 true 时,事件处理程序才能访问执行器的其他响应信息。
if (exector.get_responseavailable()) {
//判断状态是否正常
if (exector.get_statuscode() == '200') {
//得到返回值
var returninfo = exector.get_responsedata();
if (returninfo == "0") {
//显示相关内容
}
}
}
}
3、add_completed()说明:
注册的事件处理程序函数必须接受两个参数:
1) 对发出网络请求的执行器的引用。通过访问执行器,可以检查其状态和检索响应数据。
2) eventargs 参数,它由引发完成请求事件的执行器设置。
4、编写请求页面
请求地址为一个页面,没有任何html内容,仅在page_load方法中编写代码。本例中的请求页面放在根目录的checkstate文件夹下,名称为:checknetstate.aspx 。
5、请求页面代码如下,主要实现ping功能。
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
namespace iaddtech.environmental.web.ui.checkstate
{
public partial class checknetstate : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
response.clear();
//得到参数
string ip = request.form["ip"];
int isconnect = pingserver(ip);
//输入返回值
response.write(isconnect.tostring());
response.end();
}
private int pingserver(string ip)
{
system.net.networkinformation.ping p = new system.net.networkinformation.ping();
system.net.networkinformation.pingoptions options = new system.net.networkinformation.pingoptions();
options.dontfragment = true;
string data = "t";
byte[] buffer = system.text.encoding.ascii.getbytes(data);
int timeout = 1000; // timeout 时间,单位:毫秒
system.net.networkinformation.pingreply reply = p.send(ip, timeout, buffer, options);
if (reply.status == system.net.networkinformation.ipstatus.success)
return 0;
else
return 1;
}
}
}
6、用其它页面套用母版页后,测试。
sys.net.webrequest请参考:
1、 页面中拖入scriptmanager。以便于使用ajax脚本。同时放在其它客户端控件,用于触发netpost方法。这里不列出客户端控件。
复制代码 代码如下:
<asp:scriptmanager id="smmaster" runat="server" scriptmode="auto" enablepagemethods="true">
</asp:scriptmanager>
2、在master源码中编写js
复制代码 代码如下:
function netpost() {
//创建实例
var wrequest = new sys.net.webrequest();
//设置请求url
wrequest.set_url("../checkstate/checknetstate.aspx");
//定义参数
var body = "ip=192.168.1.1";
//设置参数
wrequest.set_body(body);
//设置请求方式
wrequest.set_httpverb("post");
//请求完成处理函数
wrequest.add_completed(postnet);
//执行请求
wrequest.invoke();
}
function postnet(exector, eventargs) {
//执行器的状态e :responseavailable、aborted 或 timedout。
//仅当 responseavailable 返回 true 时,事件处理程序才能访问执行器的其他响应信息。
if (exector.get_responseavailable()) {
//判断状态是否正常
if (exector.get_statuscode() == '200') {
//得到返回值
var returninfo = exector.get_responsedata();
if (returninfo == "0") {
//显示相关内容
}
}
}
}
3、add_completed()说明:
注册的事件处理程序函数必须接受两个参数:
1) 对发出网络请求的执行器的引用。通过访问执行器,可以检查其状态和检索响应数据。
2) eventargs 参数,它由引发完成请求事件的执行器设置。
4、编写请求页面
请求地址为一个页面,没有任何html内容,仅在page_load方法中编写代码。本例中的请求页面放在根目录的checkstate文件夹下,名称为:checknetstate.aspx 。
5、请求页面代码如下,主要实现ping功能。
复制代码 代码如下:
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
namespace iaddtech.environmental.web.ui.checkstate
{
public partial class checknetstate : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
response.clear();
//得到参数
string ip = request.form["ip"];
int isconnect = pingserver(ip);
//输入返回值
response.write(isconnect.tostring());
response.end();
}
private int pingserver(string ip)
{
system.net.networkinformation.ping p = new system.net.networkinformation.ping();
system.net.networkinformation.pingoptions options = new system.net.networkinformation.pingoptions();
options.dontfragment = true;
string data = "t";
byte[] buffer = system.text.encoding.ascii.getbytes(data);
int timeout = 1000; // timeout 时间,单位:毫秒
system.net.networkinformation.pingreply reply = p.send(ip, timeout, buffer, options);
if (reply.status == system.net.networkinformation.ipstatus.success)
return 0;
else
return 1;
}
}
}
6、用其它页面套用母版页后,测试。
sys.net.webrequest请参考: