之前一直在看AJAX的东西,主要是老赵的文章和视频,但是一直就没有真正的实战过,今天手头的项目终于可以用到了,但是在理论界和实际的时候却出现了很多很多的问题。
目标:实现ScriptManager+Javascript+WebService == AJAX效果
步骤:
1.建立模板页
2.添加内容也
3.拖入ScriptManager
4.在ScriptManager中添加WebService的地址
5.在内容也添加UpdatePanel控件
6.添加WebService页
7.编写WebService后台程序
8.在内容页编写客户端脚本
9.测试
通过上面这些步骤想来实现最终的AJAX效果,结果出现了很多的问题
开始正文了!QA开始
1
Q:模板页是好东西,但是他的出现也带来了一些问题,最明显的问题就是空间的ID不在那么容易的掌握,从原来的你输入什么就是什么,变成了一大长串的东西让你无法轻易的找到。
A:通过XXXX.ClientID来解决问题,例如<%=Button1.ClientID%>
2
Q:ScriptManager能否加入多个WebService的地址
A:通过测试是可以的:)

1ASP.NET AJAX + WebService的应用和问题<asp:ScriptManager ID="ScriptManager1" runat="server">
2ASP.NET AJAX + WebService的应用和问题  <Services>
3ASP.NET AJAX + WebService的应用和问题   <asp:ServiceReference Path="/WebService/Product.asmx" InlineScript="false" />
4ASP.NET AJAX + WebService的应用和问题   <asp:ServiceReference Path="/WebService/PromotionZone.asmx" InlineScript="false" />
5ASP.NET AJAX + WebService的应用和问题  </Services>
6ASP.NET AJAX + WebService的应用和问题 </asp:ScriptManager>
7ASP.NET AJAX + WebService的应用和问题



3
Q:UpdatePanel是否是必须的,记得在看教程的时候没有
A:如果只是通过Javascript+WebService 来实现的话,完全的可以不使用UpdatePanel,要我说UpdatePanel是无敌的懒人的控件,成本太大了,所以上面的步骤中有一步可以省略了
4
Q:为什么我的Javascript不能调用WebService
A:Javascript+WebService 这样的方式需要在WebService 中添加一些引用
using System.Web.Script.Services;
在WebService 类的上面再加上一个声明[ScriptService]
最后在WebService的方法上面加上[WebMethod]
总的来说就是下面这个样子

 1ASP.NET AJAX + WebService的应用和问题using System;
 2ASP.NET AJAX + WebService的应用和问题using System.Web;
 3ASP.NET AJAX + WebService的应用和问题using System.Collections;
 4ASP.NET AJAX + WebService的应用和问题using System.Web.Services;
 5ASP.NET AJAX + WebService的应用和问题using System.Web.Services.Protocols;
 6ASP.NET AJAX + WebService的应用和问题using System.Web.Script.Services;
 7ASP.NET AJAX + WebService的应用和问题using System.Data;
 8ASP.NET AJAX + WebService的应用和问题
 9



5
Q:客户端调用WebService时不管用结果还不知道错误,这个东西还真的不好调试,怎么办
A:用过Javascript来调用WebService的时候是没有办法看到错误的,所以就需要自己准备一个错误处理机制,这样可以方便的看出问题在哪里。至于不能调用WebService多半是类的名称不对造成的,要不就是WebService的路径不对,下面是一段错误处理机制,嘿嘿,这里需要感谢老赵

 

 1ASP.NET AJAX + WebService的应用和问题//声明所有的Product的错误处理都交给failedCallback方法
 2ASP.NET AJAX + WebService的应用和问题Product.set_defaultFailedCallback(failedCallback);
 3ASP.NET AJAX + WebService的应用和问题 function failedCallback(error)
 4 }



6
Q:复杂的数据类型报错,说什么A circular reference was detected while serializing an object of type 'System.Reflection.Module'.反正是看不懂,最后才知道原来是返回的数据类型太复杂了
A:简单的字符串太不好处理,还是希望能处理复杂的数据类型,至少也要一个DataTable吧,有办法,需要下载一个ASP.NET Futures,然后引用一个Microsoft.Web.Preview.dll的类,最后修改一下Web.Config文件,做好以上几点就可以返回复杂的数据类型了,然后通过点呀点的就可以处理结果了,看不懂的JSON表达式可以说拜拜了,哈哈

1ASP.NET AJAX + WebService的应用和问题<jsonSerialization>
2ASP.NET AJAX + WebService的应用和问题    <converters>
3ASP.NET AJAX + WebService的应用和问题     <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview" />
4ASP.NET AJAX + WebService的应用和问题     <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview" />
5ASP.NET AJAX + WebService的应用和问题     <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview" />
6ASP.NET AJAX + WebService的应用和问题    </converters>
7ASP.NET AJAX + WebService的应用和问题   </jsonSerialization>


7
Q:也是最后的一个问题了,客户端脚本报错,找不到这个找不到那个的,反正是一堆错误,为啥呢
A:位置问题,不能再像以前那样写在Head里面了,最好是跟在调用Javascript的控件后面,虽然不好看,不过还是忍了吧

最后最后贴出来自己代码

MasterPage
############################################################################

 1ASP.NET AJAX + WebService的应用和问题
 2ASP.NET AJAX + WebService的应用和问题
 3ASP.NET AJAX + WebService的应用和问题
 4

Test.aspx
############################################################################

 1ASP.NET AJAX + WebService的应用和问题
 2ASP.NET AJAX + WebService的应用和问题
 3ASP.NET AJAX + WebService的应用和问题
 4

Product.asmx
############################################################################

 1ASP.NET AJAX + WebService的应用和问题using System;
 2ASP.NET AJAX + WebService的应用和问题using System.Web;
 3ASP.NET AJAX + WebService的应用和问题using System.Collections;
 4ASP.NET AJAX + WebService的应用和问题using System.Web.Services;
 5ASP.NET AJAX + WebService的应用和问题using System.Web.Services.Protocols;
 6ASP.NET AJAX + WebService的应用和问题
 7ASP.NET AJAX + WebService的应用和问题using System.Web.Script.Services;
 8ASP.NET AJAX + WebService的应用和问题using System.Data;
 9ASP.NET AJAX + WebService的应用和问题
10

Web.Config
############################################################################

  1ASP.NET AJAX + WebService的应用和问题<?xml version="1.0"?>
  2ASP.NET AJAX + WebService的应用和问题<configuration>
  3ASP.NET AJAX + WebService的应用和问题  <configSections>
  4ASP.NET AJAX + WebService的应用和问题    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  5ASP.NET AJAX + WebService的应用和问题      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  6ASP.NET AJAX + WebService的应用和问题          <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  7ASP.NET AJAX + WebService的应用和问题        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  8ASP.NET AJAX + WebService的应用和问题          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
  9ASP.NET AJAX + WebService的应用和问题          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
 10ASP.NET AJAX + WebService的应用和问题          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
 11ASP.NET AJAX + WebService的应用和问题        </sectionGroup>
 12ASP.NET AJAX + WebService的应用和问题      </sectionGroup>
 13ASP.NET AJAX + WebService的应用和问题    </sectionGroup>
 14ASP.NET AJAX + WebService的应用和问题  </configSections>
 15ASP.NET AJAX + WebService的应用和问题
 16ASP.NET AJAX + WebService的应用和问题  <system.web>
 17ASP.NET AJAX + WebService的应用和问题    <pages>
 18ASP.NET AJAX + WebService的应用和问题      <controls>
 19ASP.NET AJAX + WebService的应用和问题        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 20ASP.NET AJAX + WebService的应用和问题      </controls>
 21ASP.NET AJAX + WebService的应用和问题    </pages>
 22ASP.NET AJAX + WebService的应用和问题    <!--
 23ASP.NET AJAX + WebService的应用和问题          Set compilation debug="true" to insert debugging
 24ASP.NET AJAX + WebService的应用和问题          symbols into the compiled page. Because this
 25ASP.NET AJAX + WebService的应用和问题          affects performance, set this value to true only
 26ASP.NET AJAX + WebService的应用和问题          during development.
 27ASP.NET AJAX + WebService的应用和问题    -->
 28ASP.NET AJAX + WebService的应用和问题    <compilation debug="false">
 29ASP.NET AJAX + WebService的应用和问题      <assemblies>
 30ASP.NET AJAX + WebService的应用和问题        <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 31ASP.NET AJAX + WebService的应用和问题      </assemblies>
 32ASP.NET AJAX + WebService的应用和问题    </compilation>
 33ASP.NET AJAX + WebService的应用和问题
 34ASP.NET AJAX + WebService的应用和问题    <httpHandlers>
 35ASP.NET AJAX + WebService的应用和问题      <remove verb="*" path="*.asmx"/>
 36ASP.NET AJAX + WebService的应用和问题      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 37ASP.NET AJAX + WebService的应用和问题      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 38ASP.NET AJAX + WebService的应用和问题      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
 39ASP.NET AJAX + WebService的应用和问题    </httpHandlers>
 40ASP.NET AJAX + WebService的应用和问题
 41ASP.NET AJAX + WebService的应用和问题    <httpModules>
 42ASP.NET AJAX + WebService的应用和问题      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 43ASP.NET AJAX + WebService的应用和问题    </httpModules>
 44ASP.NET AJAX + WebService的应用和问题  </system.web>
 45ASP.NET AJAX + WebService的应用和问题
 46ASP.NET AJAX + WebService的应用和问题  <system.web.extensions>
 47ASP.NET AJAX + WebService的应用和问题    <scripting>
 48ASP.NET AJAX + WebService的应用和问题      <webServices>
 49ASP.NET AJAX + WebService的应用和问题      <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
 50ASP.NET AJAX + WebService的应用和问题      <!--
 51ASP.NET AJAX + WebService的应用和问题      <jsonSerialization maxJsonLength="500">
 52ASP.NET AJAX + WebService的应用和问题        <converters>
 53ASP.NET AJAX + WebService的应用和问题          <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
 54ASP.NET AJAX + WebService的应用和问题        </converters>
 55ASP.NET AJAX + WebService的应用和问题      </jsonSerialization>
 56ASP.NET AJAX + WebService的应用和问题   -->
 57ASP.NET AJAX + WebService的应用和问题   <jsonSerialization>
 58ASP.NET AJAX + WebService的应用和问题    <converters>
 59ASP.NET AJAX + WebService的应用和问题     <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview" />
 60ASP.NET AJAX + WebService的应用和问题     <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview" />
 61ASP.NET AJAX + WebService的应用和问题     <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview" />
 62ASP.NET AJAX + WebService的应用和问题    </converters>
 63ASP.NET AJAX + WebService的应用和问题   </jsonSerialization>
 64ASP.NET AJAX + WebService的应用和问题
 65ASP.NET AJAX + WebService的应用和问题
 66ASP.NET AJAX + WebService的应用和问题   <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
 67ASP.NET AJAX + WebService的应用和问题      <!--
 68ASP.NET AJAX + WebService的应用和问题        <authenticationService enabled="true" requireSSL = "true|false"/>
 69ASP.NET AJAX + WebService的应用和问题      -->
 70ASP.NET AJAX + WebService的应用和问题
 71ASP.NET AJAX + WebService的应用和问题      <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
 72ASP.NET AJAX + WebService的应用和问题           and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
 73ASP.NET AJAX + WebService的应用和问题           writeAccessProperties attributes. -->
 74ASP.NET AJAX + WebService的应用和问题      <!--
 75ASP.NET AJAX + WebService的应用和问题      <profileService enabled="true"
 76ASP.NET AJAX + WebService的应用和问题                      readAccessProperties="propertyname1,propertyname2"
 77ASP.NET AJAX + WebService的应用和问题                      writeAccessProperties="propertyname1,propertyname2" />
 78ASP.NET AJAX + WebService的应用和问题      -->
 79ASP.NET AJAX + WebService的应用和问题      </webServices>
 80ASP.NET AJAX + WebService的应用和问题      <!--
 81ASP.NET AJAX + WebService的应用和问题      <scriptResourceHandler enableCompression="true" enableCaching="true" />
 82ASP.NET AJAX + WebService的应用和问题      -->
 83ASP.NET AJAX + WebService的应用和问题    </scripting>
 84ASP.NET AJAX + WebService的应用和问题  </system.web.extensions>
 85ASP.NET AJAX + WebService的应用和问题
 86ASP.NET AJAX + WebService的应用和问题  <system.webServer>
 87ASP.NET AJAX + WebService的应用和问题    <validation validateIntegratedModeConfiguration="false"/>
 88ASP.NET AJAX + WebService的应用和问题    <modules>
 89ASP.NET AJAX + WebService的应用和问题      <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 90ASP.NET AJAX + WebService的应用和问题    </modules>
 91ASP.NET AJAX + WebService的应用和问题    <handlers>
 92ASP.NET AJAX + WebService的应用和问题      <remove name="WebServiceHandlerFactory-Integrated" />
 93ASP.NET AJAX + WebService的应用和问题      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
 94ASP.NET AJAX + WebService的应用和问题           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 95ASP.NET AJAX + WebService的应用和问题      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
 96ASP.NET AJAX + WebService的应用和问题           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 97ASP.NET AJAX + WebService的应用和问题      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 98ASP.NET AJAX + WebService的应用和问题    </handlers>
 99ASP.NET AJAX + WebService的应用和问题  </system.webServer>
100ASP.NET AJAX + WebService的应用和问题</configuration>
101ASP.NET AJAX + WebService的应用和问题
102ASP.NET AJAX + WebService的应用和问题
103ASP.NET AJAX + WebService的应用和问题
104ASP.NET AJAX + WebService的应用和问题
105ASP.NET AJAX + WebService的应用和问题



不早了,凌晨1点了,第一篇Blog Over了,嘿嘿,看眼欧洲杯就睡觉了

相关文章: