谁可相欹 发表于 2015-1-16 22:47:57

ASP.NET网页编程之ASP.NET 2.0 AJAX中Webservice挪用办法...

在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。ajax|asp.net|web|示例ASP.NET2.0AJAX中可以在客户端js中很便利地挪用服务器Webservice,以下为一些挪用的示例。笔者安装的ASP.NET2.0AJAX
版本为AJAXNovemberCTP。
三个示例分离为:
1带参数的WS办法
2不带参数的WS办法
3参数范例为DataTable的WS办法
1、WebMethod
注重要点:
1WebMethod类必要增加定名空间Microsoft.Web.Script.Services,此空间必要援用Microsoft.Web.Preview.dll
2类声明到场标签
3在Asp.net2.0里能够间接用DataTable作为前往范例了,可是必要在Web.config文件增加序列化转换器的属性。DataSet、DataTable、DataRow均有转换器
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization>
<converters>
<addname="DataSetConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter,Microsoft.Web.Preview"/>
<addname="DataRowConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter,Microsoft.Web.Preview"/>
<addname="DataTableConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter,Microsoft.Web.Preview"/>
</converters>
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
WEB服务1:WS1
usingSystem;
usingSystem.Web;
usingSystem.Collections;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
usingMicrosoft.Web.Script.Services;
usingSystem.Data;
/**////<summary>
///WS1的择要申明
///</summary>



publicclassWS1:System.Web.Services.WebService{
publicWS1(){
//假如利用计划的组件,请作废正文以下行
//InitializeComponent();
}

publicstringServerTime()
{
returnString.Format("now:{0}",DateTime.Now);
}

publicDataTableGetDataTable()
{
DataTabledt=newDataTable("Person");
dt.Columns.Add(newDataColumn("Name",typeof(string)));
dt.Columns.Add(newDataColumn("LastName",typeof(string)));
dt.Columns.Add(newDataColumn("Email",typeof(string)));
dt.Rows.Add("kui","he","hekui168@163.com");
dt.Rows.Add("ren","chao","chaoren888@163.com");
returndt;
}
}

WEB服务2:WS
usingSystem;
usingSystem.Web;
usingSystem.Collections;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
usingMicrosoft.Web.Script.Services;
/**////<summary>
///WS的择要申明
///</summary>



publicclassWS:System.Web.Services.WebService{
publicWS(){
//假如利用计划的组件,请作废正文以下行
//InitializeComponent();
}


publicstringHelloWorld(Stringquery)
{
stringinputString=Server.HtmlEncode(query);
if(!String.IsNullOrEmpty(inputString))
{
returnString.Format("hello,{0}.",inputString);
}
else
{
return"querystringisnullorempty";
}
}
}

2、前台页面:
注重要点:
必要利用的背景WebService的办法均设置在以下地位
<asp:ScriptManagerID="ScriptManager1"runat="server">
<Services>
<asp:ServiceReferencePath="~/WS.asmx"/>
<asp:ServiceReferencePath="~/WS1.asmx"/>
</Services>
</asp:ScriptManager>
Default页面:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>UntitledPage</title>
<scriptlanguage="javascript"type="text/javascript"src="js.js">
</script>
</head>
<body>
<formid="form1"runat="server">
<asp:ScriptManagerID="ScriptManager1"runat="server">
<Services>
<asp:ServiceReferencePath="~/WS.asmx"/>
<asp:ServiceReferencePath="~/WS1.asmx"/>
</Services>
</asp:ScriptManager>
<div>
<asp:ButtonID="Button1"runat="server"Text="Button"OnClientClick="dd();returnfalse;"/>
<divid="time">
</div>
<divid="List1">
<asp:DropDownListID="ddl1"runat="server"Width="187px">
</asp:DropDownList>
</div>

</div>
</form>
</body>
</html>
3、JavaScript程序:
注重要点:
AJAXNovemberCTP必要用eval()办法将其转换成一个DataTable工具(而且要裁失落最后面的"("),而AJAXDecemberCTP撑持以下办法转换“Sys.Preview.Data.DataTable.parseFromJson(result)”
functiondd()
{
WS.HelloWorld(
hekui,
function(result)
{
alert(result);
}
);
WS1.ServerTime(
function(result)
{
alert(result);
vardivTime=document.getElementById("time");
divTime.innerHTML=result;
}
);
WS1.GetDataTable(
function(result)
{
//猎取到下拉框控件
varList=document.getElementById("ddl1");

//AJAXNovemberCTP必要用eval()办法将其转换成一个DataTable工具(而且要裁失落最后面的"(")
varText=result.dataArray.substring(0,result.dataArray.length-1);
varTable=eval(Text);

//AJAXDecemberCTP撑持以下办法转换
//varTable=Sys.Preview.Data.DataTable.parseFromJson(result);

//扫除下拉框原有列表项
for(x=List.options.length-1;x>-1;x--)
{
List.remove(0);
}

//从猎取的DataTable增加数据到下拉框列表项
for(x=0;x<Table.length;x++)
{
//猎取每行
varRow=Table;
//创立一个列表项
varoption=document.createElement("option");
//列表项显现文本赋值
option.text=Row.Name+""+Row.LastName;
//列表项选项值赋值
option.value=Row.Email;
//判别扫瞄器范例,举行项目增加
if(window.navigator.appName.toLowerCase().indexOf("microsoft")>-1)
List.add(option);
else
List.add(option,null);
}
}
);
}
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。

不帅 发表于 2015-1-19 23:51:34

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

若相依 发表于 2015-1-27 05:32:22

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

灵魂腐蚀 发表于 2015-2-5 00:11:36

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

精灵巫婆 发表于 2015-2-10 23:47:22

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

冷月葬花魂 发表于 2015-3-1 18:09:30

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

再见西城 发表于 2015-3-10 21:43:42

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

柔情似水 发表于 2015-3-17 10:59:22

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

山那边是海 发表于 2015-3-24 07:50:53

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
页: [1]
查看完整版本: ASP.NET网页编程之ASP.NET 2.0 AJAX中Webservice挪用办法...