您的位置:首页 > Web前端 > JavaScript

前台用JS无刷新运行后台CS文件中的函数

2010-01-16 21:38 507 查看
要实现此功能要使用到AjaxPro.2.dll

第一步,下载AjaxPro.2.dll文件,并在项目中注册.注册方法:在解决方案资源管理器中找到方案名称,在方案名称处右键->添加应用,再选AjaxPro.2.dll文件所在位置.

第二步,在web.config文件中的<httpHandlers></httpHandlers>中加入<add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>

第三步,在cs文件中的Page_Load中加入:AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); 其中的_Default就是该cs的类名,在js中要用到,另外记得写上using AjaxPro;

第四步,在cs中建立要在js中调用的函数,在定义函数前要加入[AjaxPro.AjaxMethod],例如

public static DataSet GetSqlData()

{

DataSet ds = new DataSet();

SqlCommand commQuery = new SqlCommand();

commQuery.CommandText = "select ID,Name from GoodCategory";

ds = MyClass.SqlClass.ds(commQuery);

return ds;

}

第五步,在前台建立函数.

function getDataSet()

{

var ds=_Default.GetSqlData().value;

if (ds!=null && typeof(ds)=="object" && ds.Tables!=null)

{

var sArray=new Array();

sArray[sArray.length] = "<table border=1>";

for(var i=0; i<ds.Tables[0].Rows.length; i++)

{

sArray[sArray.length] = "<tr>";

sArray[sArray.length] = "<td>" + ds.Tables[0].Rows[i].ID + "</td>";

sArray[sArray.length] = "<td>" + ds.Tables[0].Rows[i].Name + "</td>";

sArray[sArray.length] = "</tr>";

}

sArray[sArray.length] = "</table>";

var tableDisplay=document.getElementById('divContaine');

tableDisplay.innerHTML = sArray.join("");

}

else

{

alert('取从后台返回的ds时错误!');

}

}

在<body></body>

<input type="button" value="无刷新读取DataSet" onclick="getDataSet()" />

<div id="divContaine" runat="server">

补充一点:我用的是AjaxPro.2.dll,版本为9.2.17.1,使用时发现有点小问题,在js获得数据后会报this.onTimeout is not a function 的脚本错误提示,参考网上的数法,先在AjaxPro的官网下载源码,然后打开core.js文件,在timeout:funtcion()里加入try{}...catch{}...finally{},然后再使用build.bat重新编译dll文件,其中build.bat文件中的set ZIP=E:/AjaxProSourceCode/7za904/这里是指免费压缩软件7za.exe所在路径,需要自行更改.core.js文件修改后如下

timeout: function()
{
try {
this.duration = new Date().getTime() - this.__start;
var r = this.onTimeout(this.duration, this);
if(typeof r == "undefined" || r != false)
{
this.abort();
} else
{
this.timeoutTimer = setTimeout(this.timeout.bind(this), AjaxPro.timeoutPeriod);
}
}
catch(error)
{
// Statements that execute in the event of an exception
}
finally
{
// Statements that execute afterward either way
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: