ASP.NET AJAX入门系列(2):使用ScriptManager控件

ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,以及调用AuthenticationServiceProfileService,还有页面错误处理等。

 

主要内容

1.控件概述

2.一个简单的示例

3.客户端脚本模式

4.错误处理

5Services属性

6Scripts属性

 

一.控件概述

ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。

使用<asp:ScriptManager/>来定义一个ScriptManager,简单的ScriptManager定义形式:

<asp:ScriptManager ID="ScriptManager1" 

                   runat
="server">

      
<AuthenticationService Path="" />

      
<ProfileService LoadProperties="" Path="" />

      
<Scripts>

        
<asp:ScriptReference/>

      
</Scripts>

      
<Services>

        
<asp:ServiceReference />

      
</Services>

</asp:ScriptManager>
ScriptManager
属性和方法如下:

 

属性/方法

描述

AllowCustomError

Web.config中的自定义错误配置区<customErrors>相联系,是否使用它,默认值为true

AsyncPostBackErrorMessage

异步回传发生错误时的自定义提示错误信息,

AsyncPostBackTimeout

异步回传时超时限制,默认值为90,单位为秒

EnablePartialRendering

是否支持页面的局部更新,默认值为True,一般不需要修改

ScriptMode

指定ScriptManager发送到客户端的脚本的模式,有四种模式:AutoInheritDebugRelease,默认值为Auto,后面会仔细说到。

ScriptPath

设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性。

OnAsyncPostBackError

异步回传发生异常时的服务端处理函数,在这里可以捕获一场信息并作相应的处理。

OnResolveScriptReference

指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。

 

二.一个简单的示例

这个例子其实是UpdatePanel示例,在页面中加入了日期控件和一个下拉框,根据下拉框选择的不同,日期控件背景变为不同的颜色。示例代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<script runat="server">

    
void DropDownSelection_Change(Object sender, EventArgs e)

    
{

        Calendar1.DayStyle.BackColor 
=

            System.Drawing.Color.FromName(ColorList.SelectedItem.Value);

    }


</script>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    
<title>ScriptManager Example</title>

</head>

<body>

    
<form id="form1" runat="server">

        
<div>

            
<asp:ScriptManager ID="ScriptManager1" 

                               runat
="server">

            
</asp:ScriptManager>

            
<asp:UpdatePanel ID="UpdatePanel1"

                             runat
="server">

                
<ContentTemplate>

                    
<asp:Calendar ID="Calendar1" 

                                  ShowTitle
="True"

                                  runat
="server" />

                    
<div>

                        Background:

                        
<br />

                        
<asp:DropDownList ID="ColorList" 

                                          AutoPostBack
="True" 

                                          OnSelectedIndexChanged
="DropDownSelection_Change"

                                          runat
="server">

                            
<asp:ListItem Selected="True" Value="White"> 

                            White 
</asp:ListItem>

                            
<asp:ListItem Value="Silver"> 

                            Silver 
</asp:ListItem>

                            
<asp:ListItem Value="DarkGray"> 

                            Dark Gray 
</asp:ListItem>

                            
<asp:ListItem Value="Khaki"> 

                            Khaki 
</asp:ListItem>

                            
<asp:ListItem Value="DarkKhaki"> D

                            ark Khaki 
</asp:ListItem>

                        
</asp:DropDownList>

                    
</div>

                
</ContentTemplate>

            
</asp:UpdatePanel>

            
<br />

        
</div>

    
</form>

</body>

</html>

 

三.客户端脚本模式

在前面我们提到了ScriptMode属性指定ScriptManager发送到客户端的脚本的模式,它有四种模式:AutoInheritDebugRelease,默认值为Auto

1Auto:它会根据Web站点的Web.config配置文件来决定使用哪一种模式,只有当配置文件中retail属性设置为false:

<system.web>

  
<deployment retail="false" />

</system.web>

或者页面中的Debug指令设为true的时候会使用Debug版本,其他的情况都会使用Release版本。

<%@ Page Language="C#" Debug="true"

AutoEventWireup
="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

2Inherit:应该是通过程序设置ScriptMode的时候,等同于Auto?(不太了解)

3Debug:客户端脚本使用Debug版本,除非retail属性设为true

4Release:客户端脚本使用Release版本,除非retail属性设为false

 

四.错误处理

在页面回传时如果发生了异常AsyncPostBackError事件将被触发,错误信息的处理依赖于AllowCustomErrors属性、AsyncPostBackErrorMessage属性和Web.config中的<customErrors>配置区。下面看一个简单的错误处理例子,在AsyncPostBackError事件中捕获到异常信息并设置AsyncPostBackErrorMessage属性。

<%@ Page Language="C#" %>

<script runat="server">

    protected 
void ErrorProcessClick_Handler(object sender, EventArgs e)

    
{
        
// This handler demonstrates an error condition. In this example

        
// the server error gets intercepted on the client and an alert is shown. 

        
throw new ArgumentException();
    }


    protected 
void SuccessProcessClick_Handler(object sender, EventArgs e)

    
{
        
// This handler demonstrates no server side exception.

        UpdatePanelMessage.Text 
= "The asynchronous postback completed successfully.";

    }


    protected 
void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)

    
{
        ScriptManager1.AsyncPostBackErrorMessage 
= "异常信息为:" + e.Exception.Message;

    }


</script>


<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    
<title>PageRequestManager endRequestEventArgs Example</title>

    
<style type="text/css">

    body 
{

        font-family
: Tahoma;

    
}


    #AlertDiv
{

    left
: 40%; top: 40%;

    position
: absolute; width: 200px;

    padding
: 12px; 

    border
: #000000 1px solid;

    background-color
: white; 

    text-align
: left;

    visibility
: hidden;

    z-index
: 99;

    
}


    #AlertButtons
{

    position
: absolute;

    right
: 5%;

    bottom
: 5%;

    
}


    
</style>

</head>

<body id="bodytag">

    
<form id="form1" runat="server">

        
<div>

            
<asp:ScriptManager ID="ScriptManager1" runat="server" 
            OnAsyncPostBackError
="ScriptManager1_AsyncPostBackError">

            
</asp:ScriptManager>
 
            
<script type="text/javascript" language="javascript">

                
var divElem = 'AlertDiv';

                
var messageElem = 'AlertMessage';

                
var errorMessageAdditional = 'Please try again.';

                
var bodyTag = 'bodytag';
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

                
function ToggleAlertDiv(visString)
                
{
                     
if (visString == 'hidden')

                     
{
                         $get(bodyTag).style.backgroundColor 
= 'white';                         
                     }

                     
else
                     
{
                         $get(bodyTag).style.backgroundColor 
= 'gray';                         

                     }


                     
var adiv = $get(divElem);

                     adiv.style.visibility 
= visString;

                }


                
function ClearErrorState() {

                     $get(messageElem).innerHTML 
= '';

                     ToggleAlertDiv('hidden');                     

                }

                
function EndRequestHandler(sender, args)

                
{
                   
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
                   
{

                       
var errorMessage = args.get_error().message

                       args.set_errorHandled(
true);

                       ToggleAlertDiv('visible');

                       $get(messageElem).innerHTML 
= '"' + 

                                errorMessage + '
" ' + errorMessageAdditional;

                   }


                }


            
</script>

            
<asp:UpdatePanel runat="Server" UpdateMode="Conditional" ID="UpdatePanel1">

                
<ContentTemplate>

                    
<asp:Panel ID="Panel1" runat="server" GroupingText="Update Panel">

                        
<asp:Label ID="UpdatePanelMessage" runat="server" />

                        
<br />

                        Last update:

                        
<%= DateTime.Now.ToString() %>

                        .

                        
<br />

                        
<asp:Button runat="server" ID="Button1" Text="Submit Successful Async Postback"

                            OnClick
="SuccessProcessClick_Handler" OnClientClick="ClearErrorState()" />

                        
<asp:Button runat="server" ID="Button2" Text="Submit Async Postback With Error"

                            OnClick
="ErrorProcessClick_Handler" OnClientClick="ClearErrorState()" />

                        
<br />

                    
</asp:Panel>

                
</ContentTemplate>

            
</asp:UpdatePanel>

            
<div id="AlertDiv">

                
<div id="AlertMessage">

                
</div>

                
<br />

                
<div id="AlertButtons" >

                    
<input id="OKButton" type="button" value="OK" 

                           runat
="server" onclick="ClearErrorState()" />

                
</div>

           
</div>

    
</form>

</body>

</html>

运行后时界面:

发生异常信息:

 

五.Services属性

Services用来管理对WebService的调用,通过<asp:ServiceReference>标签可以在Services中注册一个WebService,在运行时ScriptManager将为每一个ServiceReference对象生成一个客户端代理,<asp:ServiceReference>标签一个很重要的属性是Path,用来指定WebService的路径,如下所示:

<asp:ScriptManager ID="SM1" runat="server">

    
<Services>

        
<asp:ServiceReference Path="Service.asmx"/>

    
</Services>

</asp:ScriptManager>

看一个简单的调用WebService的例子:

WebService如下,注意在WebServiceSample上加ScriptService特性:

[ScriptService]

public class WebServiceSample : System.Web.Services.WebService {

    
public WebServiceSample()

    
{

        
//Uncomment the following line if using designed components 

        
//InitializeComponent(); 

    }



    [WebMethod]

    
public string EchoString(String s)

    
{
        
return "Hello " + s;
    }


}

ASPX页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    
<title>Untitled Page</title>

</head>

<script type="text/javascript" language="JavaScript">

    
function OnbuttonGo_click() 

    
{
        requestSimpleService 
= WebServiceSample.EchoString(

            document.getElementById('inputName').value,       
//params

            OnRequestComplete    
//Complete event

            );

        
return false;
    }


    
function OnRequestComplete(result) 

    
{
        alert(result);
    }


</script>

<body>

    
<form id="form1" runat="server">

    
<asp:ScriptManager ID="ScriptManager1" runat="server">

        
<Services>

            
<asp:ServiceReference Path="WebServiceSample.asmx"/>

        
</Services>

    
</asp:ScriptManager>

    
<div>

        
<input type="text" id="inputName" size=20/>

        
<input id="button" type="button" value="调 用" onclick="return OnbuttonGo_click()" /></div>

    
</form>

</body>

</html>

运行后效果如下:

当然了也可以在运行时动态的在Services中加入ServiceReference,下面看一个运行时动态加入ServiceReference的例子:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<script runat="server">

    
void Page_Load(object sender, EventArgs e)

    
{

        ServiceReference sr 
= new ServiceReference();

        sr.Path 
= "WebServiceSample.asmx";

        ScriptManager1.Services.Add(sr);

    }


</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    
<title>Untitled Page</title>

</head>

<script type="text/javascript" language="JavaScript">

    
function OnbuttonGo_click() 

    
{

        requestSimpleService 
= WebServiceSample.EchoString(

            document.getElementById('inputName').value,       
//params

            OnRequestComplete    
//Complete event

            );

        
return false;

    }


 

    
function OnRequestComplete(result) 

    
{

        alert(result);

    }


</script>

 

<body>

    

    
<form id="form1" runat="server">

    
<asp:ScriptManager ID="ScriptManager1" runat="server">

    
</asp:ScriptManager>

    
<div>

        
<input type="text" id="inputName" size=20/>

        
<input id="button" type="button" value="调 用" onclick="return OnbuttonGo_click()" /></div>

    
</form>

</body>

</html>

可以看到运行后和在ScriptManager中直接加入的效果是一样的。

 

六.Scripts属性

关于Scripts属性到后面具体再说吧,最主要的属性有Path指定脚本的路径,ScriptMode指定客户端脚本的模式,它会覆盖ScriptManager中的ScriptMode属性,还有一个属性是IgnoreScriptPath,指定是否忽略掉ScriptManager中的ScriptPath属性。

关于ScriptManager控件就学习到这里了,至于AuthenticationService属性和ProfileService属性都很简单。

示例代码下载:http://files.cnblogs.com/Terrylee/ASPNETAJAXScriptManagerDemo.rar

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-10-25 23:16 TerryLee 阅读(74533) 评论(171)  编辑 收藏 所属分类: [08]  Web开发[07]  AJAX风云

  回复  引用    
#1楼2006-10-25 23:51 | Zzzz[未注册用户]
学习了!
  回复  引用  查看    
#2楼2006-10-26 00:16 | 曲滨      
装了,RSS 阅读器真好容易抢到、沙发 :)
先收藏一下,明天看!

  回复  引用  查看    
#3楼2006-10-26 00:17 | 曲滨      
晕,慢了几秒
  回复  引用  查看    
#4楼2006-10-26 00:39 | Jeffrey Zhao      
写在ScriptManager真的灵活多了。:)
  回复  引用  查看    
#5楼[楼主]2006-10-26 08:30 | TerryLee      
@Zzzz
@曲滨
:)

@Jeffrey Zhao
没错,相对于以前的Atlas中的ScriptManager真的灵活很多

  回复  引用  查看    
#6楼2006-10-26 09:11 | Dflying Chen      
“至于AuthenticationService属性和ProfileService属性都很简单。”
…………大哥能不能简要说两句……我实在搞不懂啊

  回复  引用  查看    
#7楼2006-10-26 09:16 | 阿一      
还是比较喜欢李大哥的系列 :)
  回复  引用    
#8楼2006-10-26 09:17 | 小庄[匿名][未注册用户]
你天天写,我天天学,谢谢
  回复  引用    
#9楼2006-10-26 10:13 | 云出岫[未注册用户]
"二.一个简单的示例"这个中updatepanel 连Triggers都不用了就可以实现局部更新功能?很奇怪了,那什么时候必须用Triggers呢?谢谢你不断地发布新的学习资料,一直都默默支持你!
  回复  引用  查看    
#10楼[楼主]2006-10-26 10:26 | TerryLee      
@Dflying Chen
这两个我想放到后面到身份认证的时候再写一下:)

  回复  引用  查看    
#11楼[楼主]2006-10-26 10:28 | TerryLee      
@阿一
谢谢哦:)

  回复  引用  查看    
#12楼[楼主]2006-10-26 10:34 | TerryLee      
@小庄[匿名]
:)

  回复  引用    
#13楼2006-10-26 10:40 | anikin[未注册用户]
@云出岫
当UpdatePanel的UpdateMode为Always的时候,无论有没有Triggers,其他控件都会更新这个UpdatePanel的;只有当UpdateMode为Conditional的时候,Triggers中的控件才更新这个UpdatePanel

  回复  引用  查看    
#14楼[楼主]2006-10-26 10:42 | TerryLee      
@云出岫
刚研究完ScriptManager,UpdatePanel等第四篇吧:)

  回复  引用  查看    
#15楼[楼主]2006-10-26 13:01 | TerryLee      
@anikin
谢谢哦:)

  回复  引用  查看    
#16楼2006-10-26 13:08 | 刚刚      
文章不错,评论也很有价值。TerryLee、anikin谢谢
  回复  引用    
#17楼2006-10-26 14:29 | nestle[匿名]
支持你,每天都来学习一下
  回复  引用    
#18楼2006-10-26 16:26 | 戴尔网站[未注册用户]
例子很好
  回复  引用  查看    
#19楼[楼主]2006-10-26 21:57 | TerryLee      
@刚刚
@nestle[匿名]
@戴尔网站
谢谢,欢迎常来哦:)

  回复  引用    
#20楼2006-10-27 09:44 | 云出岫[未注册用户]
@TerryLee
原来是这样子阿,谢谢你哦。再接再厉!

  回复  引用  查看    
#21楼[楼主]2006-10-27 17:55 | TerryLee      
@云出岫
anikin回复的不错,可以看一下:)

  回复  引用    
#22楼2006-10-28 11:10 | lauralxj[未注册用户]
我调webservice 的时候提示:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: CS0246: 找不到类型或命名空间名称“ScriptService”(是否缺少 using 指令或程序集引用?)

源错误:



行 11: [WebService(Namespace = "http://tempuri.org/")]
行 12: [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
行 13: [ScriptService]
行 14: public class Service : System.Web.Services.WebService
行 15: {

是怎么回事?

  回复  引用    
#23楼2006-10-28 11:25 | lauralxj[未注册用户]
@lauralxj
已经搞定,原来是这样的:
[Microsoft.Web.Script.Services.ScriptService]
没有添加引用

  回复  引用  查看    
#24楼[楼主]2006-10-28 16:26 | TerryLee      
@lauralxj
在ASP.NET AJAX跟Atlas下是不样的,需要给WebMethod打上[ScriptService]特性,位于Microsoft.Web.Script.Services.ScriptService命名空间:)

  回复  引用    
#25楼2006-10-30 17:44 | GX.Cheng[未注册用户]
<script type="text/javascript" language="javascript">
function InsertData()
{
WebServiceTest1.ExecuteWrite(
document.getElementById('Text1').value,
document.getElementById('Text2').value
);
OnRequestComplete();
}

<div>
<asp:ScriptManager id="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebServiceTest1.asmx" />
</Services>
</asp:ScriptManager>
</div>

提示我 WebServiceTest1 没有定义,请问是怎么回事啊? 谢谢先

  回复  引用  查看    
#26楼[楼主]2006-10-31 19:38 | TerryLee      
@GX.Cheng
看一下你的WebMethod有没有打上[ScriptService]特性?

  回复  引用  查看    
#27楼2006-11-02 22:37 | 夜风      
在设置
<system.web>
<deployment retail="false" />
</system.web>
时,提示如下错误:

错误 25 E:\asp.netAjax\Ajax\Default.aspx: ASP.NET 运行时错误: 在 machine.config 文件之外使用注册为 allowDefinition='MachineOnly' 的节是错误的。 (E:\asp.netAjax\web.config line 48) E:\asp.netAjax\Ajax\Default.aspx 1 1 E:\asp.netAjax\

  回复  引用    
#28楼2006-11-06 11:47 | Batista[未注册用户]
我刚开始接触AJAX,有些问题不知道如何解决。如下:
我再添加Microsoft.Web.Script.Services.ScriptService的时候,出现“命名空间“Microsoft.Web.Script.Services”中不存在类型或命名空间名称“ScriptService”(是缺少程序集引用吗?)”这个错误提示

  回复  引用    
#29楼2006-11-06 11:53 | Batista[未注册用户]
SORRY 低级错误……
using Microsoft.Web.Script.Services;这样就好了

  回复  引用    
#30楼2006-11-09 19:09 | 哈哈[匿名][未注册用户]
在 AJAX Beta2 下你的 错误处理 Demo通不过啊!!
  回复  引用  查看    
#31楼[楼主]2006-11-12 17:01 | TerryLee      
@哈哈[匿名]
前五篇都是按照Beta1写的,Beta2怎么处理没仔细看

  回复  引用    
#32楼2006-11-17 19:58 | p[未注册用户]
四.错误处理
真的有问题,不知道怎么改?

  回复  引用    
#33楼2006-12-01 17:15 | LJQ[未注册用户]
在 AJAX Beta2 下 日历那个还是重新载入页面 没有AJAX的效果 是为什么呢 3Q
  回复  引用    
#34楼2006-12-04 00:29 | superj[未注册用户]
这个网页的评论是AJAX的,是怎么做的啊.
  回复  引用  查看    
#35楼[楼主]2006-12-04 08:24 | TerryLee      
@superj
使用了UpdatePanel

  回复  引用    
#36楼2006-12-06 17:51 | 机枪兵[未注册用户]
在项目中添加一个asmx文件倒是很顺利地就能从客户端调用webservice中的方法,但如果那个方法发布在项目之外怎么办呢?如http://localhost/anotherurl/test.asmx。想了很多办法,web.config也改了,参数也和项目中一样,但运行时就会提示“对象不支持此属性或方法”,请问这是怎么回事呀,我该怎么改呢,谢谢!
  回复  引用    
#37楼2006-12-08 14:41 | lxy[未注册用户]
支持,很不错咯!
  回复  引用    
#38楼2006-12-15 11:11 | 佚名[匿名][未注册用户]
说实话,写的文章并不生动,不是面向初学者的,似乎是面向知识点,有待改进呀
  回复  引用  查看    
#39楼[楼主]2006-12-15 21:13 | TerryLee      
@佚名[匿名]
啥也不说了,阁下也写几篇跟大家分享一下吧!

  回复  引用    
#40楼2006-12-18 14:55 | start[匿名][未注册用户]
这一篇应该是我看到的最好的入门系列了,比较容易看懂,例子也很好,继续支持你
  回复  引用  查看    
#41楼2006-12-18 15:38 | Anthan      
错误处理部分的示例代码中的那段JS脚本看得不是很懂,是为了显示那个浮动错误信息窗口还是模拟客户端调用错误啊?
如果是浮动错误信息窗口得话貌似在IE7下不浮动哈。呵呵。

  回复  引用  查看    
#42楼2006-12-18 16:18 | Anthan      
@TerryLee
在RC版本下最后一个例子引入System.Web.Script.Services命名空间,然后
类名前使用[ScriptService]标签,方法前使用[ScriptMethod]标签,都脚本错误,提示找不到WebServiceSample对象。
是RC版本和Bete1不同造成还是我使用方法有误,请指点一二...
我是以application得方式Demo的,如果按照你示例程序中的WebSite的方式的话是没有问题的。
真是困惑啊...

  回复  引用  查看    
#43楼2006-12-18 17:45 | Anthan      
上面那个已经解决,竟然是IE7双缓存导致的。
真是气死我了,重新启动IE竟然好了。

  回复  引用  查看    
#44楼[楼主]2006-12-18 23:41 | TerryLee      
@start[匿名]
谢谢

  回复  引用  查看    
#45楼[楼主]2006-12-18 23:42 | TerryLee      
@Anthan
:)

  回复  引用    
#46楼2006-12-19 21:32 | zzzXXX[未注册用户]
晕啊,是using system.web.script.servies
  回复  引用  查看    
#47楼2006-12-20 17:14 | DOGNET      
@TerryLee
你好,上面你说的前五篇都是基于Beta 1的,我用的是ASP.NET AJAX 1.0 RC版,在按照你的第二篇做Default3时在调用js脚本中的
" requestSimpleService = ScriptManagerDemo3_Services.EchoString(

document.getElementById('inputName').value, //params

OnRequestComplete //Complete event

);
"
出现如下错误:"Microsoft JScript 运行时错误: 对象不支持此属性或方法"
请问如何解决?

  回复  引用    
#48楼2006-12-22 11:01 | luckydog[未注册用户]
我想问问TerryLee,在ASP.NET AJAX 1.0 RC中怎样使用PageMethods啊,可以举个例子吗?在Atlas就可以正常使用!
  回复  引用  查看    
#49楼[楼主]2006-12-23 16:23 | TerryLee      
@zzzXXX
:)

  回复  引用  查看    
#50楼[楼主]2006-12-23 16:24 | TerryLee      
@DOGNET
在RC中,命名空间发生了改变
1.看一下你的WebService方法特性
2.看一下配置文件

  回复  引用  查看    
#51楼[楼主]2006-12-23 16:25 | TerryLee      
@luckydog
PageMethods必须是static

  回复  引用    
#52楼2006-12-23 17:04 | qqwwee[未注册用户]
您好:

我昨天安装了ajax,调试了下您的这个例子,发现WebServiceSample这个文件不能引用Microsoft.Web.Script.Services,

换成using System.Web.Script.Services;这个后可以调试成功,请问是ajax升级引起的吗?

ajax什么时候才会出正式版啊?老是担心自己用的是旧版

  回复  引用  查看    
#53楼[楼主]2006-12-23 17:48 | TerryLee      
@qqwwee
没错,是由于在最新RC 版中命名空间改变了,正式版现在还不好确定:)

  回复  引用    
#54楼2006-12-27 16:24 | ttloveyou3344[未注册用户]
我照大哥的例子做了,出现WebServiceSample未定义,请问这是什么问题,我的方法加了[ScriptService]啊.
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using Microsoft.Web.Script.Services;
[ScriptService]
public class WebServiceSample : System.Web.Services.WebService {

public WebServiceSample () {

//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[ScriptMethod]
public string EchoString(String s)
{
return "Hello " + s;
}

}
大哥帮我看看我哪里写错了

  回复  引用    
#55楼2006-12-29 16:49 | lpxp[匿名][未注册用户]
default2页面一读出来,怎么会出现'sys 未定义'
  回复  引用    
#56楼2006-12-30 09:59 | 小白[匿名][未注册用户]
请问
Sys.WebForms.PageRequestManager.getInstance().add_endRequest
, $get(bodyTag) ,args.get_error(),args.set_errorHandled, 我都没有见过这些方法,这些方法是JS里自带的吗,$get(bodyTag) 是不是和document.getelementbyid 效果是一样的,但是我在普通的HTML里面用$get(bodyTag) ,好像还是要出错,明白的朋友留个言指点我一下:)

  回复  引用  查看    
#57楼2007-01-04 17:18 | 迷茫的猪      
@DOGNET
查看生成的Html代码及Js文件, 找到相关方法...

  回复  引用    
#58楼2007-01-10 16:32 | 水在江河[未注册用户]
我下了http://www.cnblogs.com/Files/Terrylee/ASPNETAJAXScriptManagerDemo.rar,怎么编译成功后运行页面有错误那,其中有“Sys未定义”类似的脚本错误。
  回复  引用    
#59楼2007-01-18 22:25 | 陈一夫[未注册用户]
第五个例子,老大忘记交代应该先引用命名空间了,目前release版应该是using System.Web.Script.Services;这样才能使用[ScriptService],我试了好多次才找到原因。
  回复  引用  查看    
#60楼[楼主]2007-01-20 00:26 | TerryLee      
@陈一夫
是需要引入命名空间的:)

  回复  引用    
#61楼2007-01-26 17:27 | niao [未注册用户]
我是ajax的初学者,在做第2个例子的时候到下边这句话就执行不过去了
throw new ArgumentException();

而且执行的时候的截面和您给出的也不太一样

谁能帮帮我?

  回复  引用  查看    
#62楼2007-01-27 12:36 | Nina      
http://www.cnblogs.com/Files/Terrylee/ASPNETAJAXScriptManagerDemo.rar">http://www.cnblogs.com/Files/Terrylee/ASPNETAJAXScriptManagerDemo.rar,怎么编译成功后运行页面有错误那,其中有“Sys未定义”类似的脚本错误。
=============
我是ajax的初学者,在做第2个例子的时候到下边这句话就执行不过去了
throw new ArgumentException();

而且执行的时候的截面和您给出的也不太一样
=====================================
上面兩個問題我都遇到過。
現在安裝的是正式1.0,demo運行時,總是說控件不對,但是我仔細看了,寫法時一樣的啊

  回复  引用    
#63楼2007-01-31 14:13 | snryang[未注册用户]
我是来学习的,嘿嘿~~
  回复  引用    
#64楼2007-01-31 15:58 | vicky[未注册用户]
未能加载文件或程序集“Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

我是aja新手 请指点下 谢谢

  回复  引用    
#65楼2007-01-31 16:18 | vicky[未注册用户]
我是载了您的源码 运行出现的这个问题!
  回复  引用    
#66楼2007-02-02 11:23 | cc[未注册用户]
不错哦
  回复  引用  查看    
#67楼2007-02-05 18:37 | 吴杰      
学习中,非常感谢
  回复  引用  查看    
#68楼2007-02-06 10:47 | Talent_XQ      
调试AsyncPostBackErrorMessage的时候出问题
$get() 方法执行不过去!!
function ToggleAlertDiv(visString)
{
if (visString == 'hidden')

{
$get(bodyTag).style.backgroundColor = 'white'; \\这地方缺少对象???????????
}
else
{
$get(bodyTag).style.backgroundColor = 'gray';

}

var adiv = $get(divElem);

adiv.style.visibility = visString;

}

  回复  引用  查看    
#69楼2007-02-06 15:00 | Talent_XQ      
晕了 调试 webservie的时候又出错了:
function OnbuttonGo_click()

{
requestSimpleService = WebServiceSample.EchoString(//这地方,对象不支持属性和方法?????、

document.getElementById('inputName').value, //params

OnRequestComplete //Complete event

);

return false;
}
代码都不能调出来,怎么说服人啊????

  回复  引用  查看    
#70楼2007-02-06 15:18 | Talent_XQ      
我把上面给的例子下载下来,调试。。。

错误 1 未能加载文件或程序集“Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。 F:\2.6\ScriptManagerDemo\Web.config 38
错误 2 F:\2.6\ScriptManagerDemo\Default.aspx: ASP.NET 运行时错误: 未能加载文件或程序集“Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。 (F:\2.6\ScriptManagerDemo\web.config line 38) F:\2.6\ScriptManagerDemo\Default.aspx 1 1 F:\2.6\ScriptManagerDemo\
警告 3 未声明“requirePermission”属性。 F:\2.6\ScriptManagerDemo\Web.config 7 206 F:\2.6\ScriptManagerDemo\
警告 4 未声明“requirePermission”属性。 F:\2.6\ScriptManagerDemo\Web.config 8 200 F:\2.6\ScriptManagerDemo\
警告 5 未声明“requirePermission”属性。 F:\2.6\ScriptManagerDemo\Web.config 9 214 F:\2.6\ScriptManagerDemo\
消息 6 未能找到元素“microsoft.web”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 50 3 F:\2.6\ScriptManagerDemo\
消息 7 未能找到元素“scripting”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 51 4 F:\2.6\ScriptManagerDemo\
消息 8 未能找到元素“webServices”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 52 5 F:\2.6\ScriptManagerDemo\
消息 9 未能找到元素“validation”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 77 4 F:\2.6\ScriptManagerDemo\
消息 10 未能找到属性“validateIntegratedModeConfiguration”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 77 15 F:\2.6\ScriptManagerDemo\
消息 11 未能找到元素“modules”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 78 4 F:\2.6\ScriptManagerDemo\
消息 12 未能找到元素“add”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 79 5 F:\2.6\ScriptManagerDemo\
消息 13 未能找到属性“name”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 79 9 F:\2.6\ScriptManagerDemo\
消息 14 未能找到属性“preCondition”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 79 29 F:\2.6\ScriptManagerDemo\
消息 15 未能找到属性“type”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 79 59 F:\2.6\ScriptManagerDemo\
消息 16 未能找到元素“handlers”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 81 4 F:\2.6\ScriptManagerDemo\
消息 17 未能找到元素“remove”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 82 5 F:\2.6\ScriptManagerDemo\
消息 18 未能找到属性“name”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 82 12 F:\2.6\ScriptManagerDemo\
消息 19 未能找到元素“add”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 5 F:\2.6\ScriptManagerDemo\
消息 20 未能找到属性“name”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 9 F:\2.6\ScriptManagerDemo\
消息 21 未能找到属性“verb”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 37 F:\2.6\ScriptManagerDemo\
消息 22 未能找到属性“path”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 46 F:\2.6\ScriptManagerDemo\
消息 23 未能找到属性“preCondition”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 60 F:\2.6\ScriptManagerDemo\
消息 24 未能找到属性“type”的架构信息。 F:\2.6\ScriptManagerDemo\Web.config 83 90 F:\2.6\ScriptManagerDemo\

  回复  引用  查看    
#71楼[楼主]2007-02-07 16:58 | TerryLee      
@Talent_XQ
是你使用的版本有问题吧,这些都是在Beta1上面调试的,后面的RC版和正式版都有不小的变化,请首先确定自己使用的ASP.NET AJAX版本

  回复  引用  查看    
#72楼2007-02-08 23:45 | goalbell      
学习了,掌握好基础!
  回复  引用    
#73楼2007-02-21 10:49 | panda[未注册用户]
对于正式版,我来说几句话,给不能通过测试的朋友一些提示。我也搞了很久才搞出来。

1 [ScriptService]
要添加 using System.Web.Script.Services;
和System.Web.Extensions引用
2
namespace SM
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class AjaxService : System.Web.Services.WebService
{

[WebMethod]
public string HelloWorld(string name)
{
return name + " Hello World";
}
}
}
3 js要把命名空间写上,如下
<script type="text/javascript" language="JavaScript">

function OnbuttonGo_click()
{
SM.AjaxService.HelloWorld(
document.getElementById('inputName').value, //params
OnRequestComplete //Complete event
);

return false;
}

function OnRequestComplete(result)
{
alert(result);
}

</script>

  回复  引用  查看    
#74楼2007-02-24 07:27 | 若寒      
搞了N久,终于OK了.
加了[System.Web.Script.Services.ScriptService]就OK!

  回复  引用    
#75楼2007-02-25 11:34 | hi[未注册用户]
错误处理中遇到问题:
throw new ArgumentException();
提示:throw new ArgumentException();
初学者!
谢了!

  回复  引用    
#76楼2007-02-25 11:36 | hi[未注册用户]
错误处理中遇到问题:
throw new ArgumentException();
提示:值不在预期的范围内。
初学者!
谢了!

  回复  引用    
#77楼2007-02-28 10:08 | youyuan[未注册用户]
谁能帮我解决一下 sys 未定义的问题呀?
  回复  引用    
#78楼2007-03-07 00:36 | RC[未注册用户]
requestSimpleService = WebServiceSample.EchoString(
document.getElementById('inputName').value, //params
OnRequestComplete //Complete event
);
return false;
浏览后,ie6老是报“websampleservice未定义”,上面的回复都看了,都试了,还是没解决,急求解(我是最近下的asp.net ajax)

  回复  引用  查看    
#79楼2007-03-14 18:48 | YanziMyWife      
四.错误处理
没看懂

  回复  引用  查看    
#80楼2007-03-14 18:55 | YanziMyWife      
我这里怎么怎么弹不出对话框而是在页面上显示啊
  回复  引用    
#81楼2007-03-17 14:29 | snow[未注册用户]
真得非常的感谢,您辛苦了,注意身体呀
  回复  引用  查看    
#82楼2007-03-19 18:31 | 汪洋怡舟      
<asp:ListItem Selected="True" Value="White">

White </asp:ListItem>

<asp:ListItem Value="Silver">

Silver </asp:ListItem>

<asp:ListItem Value="DarkGray">

Dark Gray </asp:ListItem>

<asp:ListItem Value="Khaki">

Khaki </asp:ListItem>

<asp:ListItem Value="DarkKhaki"> D

ark Khaki </asp:ListItem>

</asp:DropDownList>
当下拉列表中出现中文时候好像不支持!


  回复  引用  查看    
#83楼2007-03-20 12:31 | edrp.cn      
博主您好:
在看了您上面的示例二后,觉得UpdatePanel用不用都可以,请问为什么要使用UpdatePanel,而我加入的ScriptManager好像也没有用,删除ScriptManager一样可以,初学,谢谢?
TO:汪洋怡舟
可以支持中文的,将Text属性设置成显示的中文,将Value设置成传入的值就可以了

  回复  引用    
#84楼2007-03-25 21:35 | 未醉浅逃[未注册用户]
请允许我提个意见:
为什么代码里面都没有注释啊?
看起来好吃力
不是说是入门的吗?虽然例子是简单例子,但有些地方看起来跟自己的思路不一样就比较吃力了。。。。

  回复  引用    
#85楼2007-03-26 20:48 | 扑街仔
我很想知道为什么有时候javascript要放在scriptManager后面才有效啊。可否回答一下.谢谢.
  回复  引用    
#86楼2007-03-26 20:51 | 扑街仔
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
还有这局 看不懂

  回复  引用    
#87楼2007-03-27 17:25 | 扑街仔
我想问一下requestSimpleService为什么没有声明 就 可以用了。难道javascript可以??
  回复  引用  查看    
#88楼2007-04-05 17:14 | yfu      
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

这些客户端的东西是怎么来的呢!?实在是看不懂,麻烦你了,上面有好多人问呢!!说一下下吧!!

  回复  引用    
#89楼2007-04-10 13:55 | LY[未注册用户]
太好了,终于让我找到了。
  回复  引用    
#90楼2007-04-11 16:32 | LG[未注册用户]
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
对这段困惑的看看这里:
http://www.cnblogs.com/hblynn/archive/2007/01/31/635507.html

  回复  引用    
#91楼2007-04-14 10:58 | myt[未注册用户]
好,谢谢了,帮了我大忙了
  回复  引用  查看    
#92楼2007-05-30 16:02 | C Sharp      
学习了阿 呵呵
  回复  引用    
#94楼2007-08-14 16:32 | ricky[未注册用户]
作为新手,强烈学习!!!谢谢
  回复  引用  查看    
#95楼2007-08-29 22:00 | 遭雷劈      
很好,很强大
配合着官网的教学视频看,无敌了

  回复  引用    
#96楼2007-09-11 10:45 | 王明星[未注册用户]
李大哥!你好啊!我想问一下在javascript中$符号是做用的呢,还有就是
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
{
var errorMessage = args.get_error().message
args.set_errorHandled(true);
ToggleAlertDiv('visible');
$get(messageElem).innerHTML = '"' + errorMessage + '" ' + errorMessageAdditional;
}
}

这个事件如何处理后台页面的呢!

  回复  引用    
#97楼2007-12-15 00:20 | 11133333[未注册用户]
12222
  回复  引用    
#98楼2007-12-18 17:04 | beyondme[未注册用户]
我是ajax的初学者,在做第2个例子的时候到下边这句话就执行不过去了
throw new ArgumentException();

而且执行的时候的截面和您给出的也不太一样.
请教是怎么回事呀?

  回复  引用  查看    
#99楼2007-12-27 13:04 | 夕阳夕下      
谢谢楼主,我每天都来你这学习
  回复  引用    
#100楼2008-01-16 16:28 | 玉鱼[未注册用户]
不错,学习一下,不过好多错误哦,还是要感谢楼主
  回复  引用    
#101楼2008-02-29 14:45 | liaobing[未注册用户]
为什么我的异常处理就是出不来呢,真郁闷啊 都不知道该如何调试 希望楼主能快点帮我解决一下这个问题 。谢谢!
  回复  引用  查看    
#102楼2008-02-29 16:20 | 博览群书      
谢谢TerryLee,努力学习中。
  回复  引用    
#103楼2008-02-29 16:21 | liaobing[未注册用户]
这个东西实在是太好玩了,太神奇了。我终于调通了。可以了 那个异常的div弹出来了。
  回复  引用    
#104楼2008-03-27 16:13 | *o*[未注册用户]
怎么样才可以像你做的弹出一样好看呢?
是要加皮肤?

  回复  引用    
#105楼2008-04-02 17:42 | Kymo[未注册用户]
哪位给解释一下$get(bodyTag)吧,谢谢了
  回复  引用  查看    
#106楼2008-04-17 16:43 | 杨彩      
现在才来学习,迟了点@
  回复  引用    
#107楼2008-04-24 14:25 | salangane0512[未注册用户]
真是好东西,谢谢了!
  回复  引用    
#108楼2008-05-23 11:11 | 张路[未注册用户]
怎么我一样都试不出来呀 按钮按下去不报错 也无结果显示<Services>那个

我是VS2008 既然集成在内是否不需要另装任何动西支持ajax呀

  回复  引用    
#109楼2008-05-26 22:14 | ying84[未注册用户]
李大哥,问个简单的问题,错误处理小节的代码中的get前面的$符号有什么特殊的含义吗?

function ToggleAlertDiv(visString)
{
if (visString == 'hidden')

{
$get(bodyTag).style.backgroundColor = 'white';
}
else
{
$get(bodyTag).style.backgroundColor = 'gray';

}

var adiv = $get(divElem);

adiv.style.visibility = visString;

}

  回复  引用    
#110楼2008-06-03 13:48 | YanPing[未注册用户]
我这里没有报错
就是点击“调用”的时候没有反应
对话框没有弹出
IE的左下角提示“网页上有错误”

  回复  引用  查看    
#111楼2008-06-09 19:58 | zagelover      
--引用--------------------------------------------------
陈一夫: 第五个例子,老大忘记交代应该先引用命名空间了,目前release版应该是using System.Web.Script.Services;这样才能使用[ScriptService],我试了好多次才找到原因。
--------------------------------------------------------

谢谢,我也是这个问题,搞了好久,呵呵!!!

  回复  引用  查看    
#112楼2008-06-21 18:07 | 不死小强      
偶也是初学者,在其出正式版之前,只能自己玩玩,不会用到项目上的。
  回复  引用  查看    
#113楼2008-06-21 18:23 | 不死小强      
刚测试了几个项目,真的很爽啊!局部刷新就是不错!呵呵!
收藏了,慢慢学!

  回复  引用  查看    
#114楼[楼主]2008-06-21 21:26 | TerryLee      
@不死小强
这东西出来很久了啊

  回复  引用    
#115楼2008-07-02 09:58 | yangblank[未注册用户]
你好,请问JS里的$get()这个方法是什么意思?有什么作用?谢谢。
  回复  引用  查看    
#116楼[楼主]2008-07-02 10:02 | TerryLee      
@yangblank
$get() == document.getElementById()

  回复  引用    
#117楼2008-07-03 11:47 | Yzr[未注册用户]
请问调用项目外的web服务,怎么用啊?我这里说找不到web服务?
  回复  引用  查看    
#118楼2008-07-15 12:22 | 编程的夜猫      
学习!
  回复  引用    
#119楼2008-07-29 11:06 | cychai[未注册用户]
在vs2008 ASP.Net Ajax中,添加的引用为
using System.Web.Script.Services;

不是using Microsoft.Web.Script.Services;

  回复  引用  查看    
#120楼[楼主]2008-07-30 00:55 | TerryLee      
@cychai
在.NET 2.0中也是System.Web.Script.Services,只是这篇写的时候还在Beta版。。。

  回复  引用    
#121楼2008-08-15 19:29 | greate[未注册用户]
分析器错误消息: 在 machine.config 文件之外使用注册为 allowDefinition='MachineOnly' 的节是错误的。
  回复  引用    
#122楼2008-08-19 09:41 | lusee123[未注册用户]
李大哥,好,下面是我照着你写的例子写了一个,但是还是报错!

WebServiceSample.asmx:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace TerryLeeTest
{
/// <summary>
/// WebServiceSample 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebServiceSample : System.Web.Services.WebService
{
public WebServiceSample()
{

}

[WebMethod]
public string HelloWorld()
{
return "Hello World";
}

[WebMethod]
public string EchoString(string s)
{
return "Hello " + s;
}
}
}


WebServiceTest.aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebServiceTest.aspx.cs" Inherits="TerryLeeTest.WebServiceTest" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<script type="text/javascript" language="javascript">
function OnbuttonGo_click()
{
requestSimapleService=WebServiceSample.EchoString(document.getElementById("inputName").value,OnRequestComplete);
return false;
}
function OnRequestComplete(result)
{
alert(result);
}
</script>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServiceSample.asmx"/>
</Services>
</asp:ScriptManager>
<div>
<input type="text" id="inputName" size="20" />
<input id="button" type="button" value="调用" onclick="return OnbuttonGo_click()" />
</div>
</form>
</body>
</html>

他报的是
WebServiceSample对象未定义!!
错误!!

  回复  引用    
#123楼2008-08-19 11:43 | IT达人群[未注册用户]
IT达人群:67761614
  回复  引用  查看    
#124楼[楼主]2008-08-20 10:17 | TerryLee      
@lusee123
还是哪个名称上的错误或者命名空间等问题,你可以再仔细检查一遍看看。。。

  回复  引用    
#125楼2008-08-22 12:41 | VFoxPro[未注册用户]
你好 @TerryLee
使用Ajax后自己再扩展Object的原生类型会导致Sys的错误,不用Ajax 就无此问题。能否变相的解决?


  回复  引用    
#126楼2008-09-10 17:23 | ljf[未注册用户]
好不容易找到这里来了....
学习中

  回复  引用    
#127楼2008-09-11 14:53 | worldfirst[未注册用户]
楼主给的第五节的例子跑不起来呀,报脚本错误,有没有能跑起来的程序呢?
  回复  引用  查看    
#128楼[楼主]2008-09-17 00:59 | TerryLee      
@ljf
欢迎常来:)

  回复  引用  查看    
#129楼[楼主]2008-09-17 01:00 | TerryLee      
@worldfirst
本文是在Beta 1下完成的。

  回复  引用    
#130楼2008-09-23 11:10 | wenzhixing[未注册用户]
--引用--------------------------------------------------
panda: 对于正式版,我来说几句话,给不能通过测试的朋友一些提示。我也搞了很久才搞出来。
<br>
<br>1 [ScriptService]
<br>要添加 using System.Web.Script.Services;
<br>和System.Web.Extensions引用
<br>2
<br>namespace SM
<br>{
<br> [WebService(Namespace = &quot;<a target="_new" href="http://tempuri.org/&quot;">http://tempuri.org/&quot;</a>)]
<br> [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
<br> [ScriptService]
<br> public class AjaxService : System.Web.Services.WebService
<br> {
<br>
<br> [WebMethod]
<br> public string HelloWorld(string name)
<br> {
<br> return name + &quot; Hello World&quot;;
<br> }
<br> }
<br>}
<br>3 js要把命名空间写上,如下
<br> &lt;script type=&quot;text/javascript&quot; language=&quot;JavaScript&quot;&gt;
<br>
<br> function OnbuttonGo_click()
<br> {
<br> SM.AjaxService.HelloWorld(
<br> document.getElementById('inputName').value, //params
<br> OnRequestComplete //Complete event
<br> );
<br>
<br> return false;
<br> }
<br>
<br> function OnRequestComplete(result)
<br> {
<br> alert(result);
<br> }
<br>
<br>&lt;/script&gt;
<br>
--------------------------------------------------------
完全正确!!谢谢!

  回复  引用    
#131楼2008-11-01 15:24 | 城市猎人24[未注册用户]
我是新手,请问博主的测试环境,我的是VS2005,安装了ASPAJAXExtSetup.msi,下载你的例子,可是测试不了,问题多多!
  回复  引用  查看    
#132楼[楼主]2008-11-05 09:45 | TerryLee      
@城市猎人24
ASP.NET AJAX 1.0 Beta版的例子,在ASP.NET AJAX 1.0下测试,没问题才怪,呵呵

  回复  引用  查看    
#133楼2008-11-07 07:57 | 飘~飘      
--引用--------------------------------------------------
城市猎人24: 我是新手,请问博主的测试环境,我的是VS2005,安装了ASPAJAXExtSetup.msi,下载你的例子,可是测试不了,问题多多!
--------------------------------------------------------
ME 也是2005 基本没问题呀

  回复  引用    
#134楼2008-12-05 15:56 | francis[未注册用户]
requestSimapleService=WebServiceSample.EchoString(document.getElementById("inputName").value,OnRequestComplete);
请问这里的requestSimapleService是什么意思啊,前后都没有用到啊?还有为什么会出现对像不支持属性和方法?


  回复  引用  查看    
#135楼[楼主]2008-12-08 10:39 | TerryLee      
@francis
看看JavaScript的一些基础知识吧,这对于你学习各种AJAX框架有很大的帮助:)

  回复  引用  查看    
#136楼2008-12-10 12:00 | 幻蓝      
AJAX.NET开发的页面在加载的时候

是不是会慢的很?

平白页面内容的脚本增加很多。
以前看过几个这样的网站都不是很乐观。

就不想用这技术了。

现在更喜欢JQuerry

  回复  引用  查看    
#137楼[楼主]2008-12-15 10:17 | TerryLee      
@幻蓝
1. AJAX.NET跟ASP.NET AJAX不是同一个东西,不要混淆

2. ASP.NET AJAX其实也没有想象中那么慢,通过HTTP压缩等手段还是可以做到让页面的体积减小

3. jQuery确实是个不错的东西

  回复  引用    
#138楼2008-12-30 00:25 | cazy[未注册用户]
支持,很不错咯!
  回复  引用  查看    
#139楼[楼主]2009-01-04 11:25 | TerryLee      
@cazy
谢谢支持:)

  回复  引用  查看    
#140楼2009-01-08 13:09 | 谢小妹      
@youyuan
配置文件一般都会缺少<httpHandlers></httpHandlers> 这一段,

还有就是 <asp:SrciptManager> 控件一定要紧跟在<form>后面

具体配置如下:

......

<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<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"/>
<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"/>

</httpHandlers>


  回复  引用  查看    
#141楼2009-02-04 13:42 | 梦想飞翔      
使用了ajax.net后怎么进行页面跳转呢。使用updatepanel控件包含了gridview,在gridview中单击button列,事件里面处理用Response.Redirect("地址")的方法运行时出错。注册脚本到前台也不起作用。网络上面也没有找到答案。不知要做什么设置才行。
  回复  引用    
#142楼2009-02-13 17:07 | Brannie[未注册用户]
122楼我回复你的错误
requestSimapleService=WebServiceSample.EchoString(document.getElementById("inputName").value,OnRequestComplete);
这里出现错误,以为你在建立项目的时候用到了命明空间,所以你必须引用命名空间可以~
正确写法如下:
requestSimapleService=TerryLeeTest.WebServiceSample.EchoString(document.getElementById("inputName").value,OnRequestComplete);

  回复  引用  查看    
#143楼2009-03-09 16:31 | yaunion      
@panda
--引用--------------------------------------------------
Brannie: 122楼我回复你的错误
requestSimapleService=WebServiceSample.EchoString(document.getElementById(&quot;inputName&quot;).value,OnRequestComplete);
这里出现错误,以为你在建立项目的时候用到了命明空间,所以你必须引用命名空间可以~
正确写法如下:
requestSimapleService=TerryLeeTest.WebServiceSample.EchoString(document.getElementById(&quot;inputName&quot;).value,OnRequestComplete);
--------------------------------------------------------
--引用--------------------------------------------------
panda: 对于正式版,我来说几句话,给不能通过测试的朋友一些提示。我也搞了很久才搞出来。
<br>
<br>1 [ScriptService]
<br>要添加 using System.Web.Script.Services;
<br>和System.Web.Extensions引用
<br>2
<br>namespace SM
<br>{
<br> [WebService(Namespace = &quot;<a target="_new" href="http://tempuri.org/&quot;">http://tempuri.org/&quot;</a>" target="_new">http://tempuri.org/&quot;">http://tempuri.org/&quot;</a>)]
<br> [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
<br> [ScriptService]
<br> public class AjaxService : System.Web.Services.WebService
<br> {
<br>
<br> [WebMethod]
<br> public string HelloWorld(string name)
<br> {
<br> return name + &quot; Hello World&quot;;
<br> }
<br> }
<br>}
<br>3 js要把命名空间写上,如下
<br> &lt;script type=&quot;text/javascript&quot; language=&quot;JavaScript&quot;&gt;
<br>
<br> function OnbuttonGo_click()
<br> {
<br> SM.AjaxService.HelloWorld(
<br> document.getElementById('inputName').value, //params
<br> OnRequestComplete //Complete event
<br> );
<br>
<br> return false;
<br> }
<br>
<br> function OnRequestComplete(result)
<br> {
<br> alert(result);
<br> }
<br>
<br>&lt;/script&gt;
<br>
--------------------------------------------------------

我先也报错,就是这里的第三点,要应用命名空间。谢谢了

  回复  引用    
#144楼2009-03-11 18:20 | 痞子112[未注册用户]
@Talent_XQ
你的那个问题是你的body标签没有ID。所以没有对象哦
哈哈,仔细一点才可以看清楚

  回复  引用    
#145楼2009-03-25 19:43 | 幻想震
TerryLee

請問該如何引用另一個Project中的web Service
我在兩個Project中做了引用
但試了很久,但JavaScript呼叫時仍然報錯
謝謝

  回复  引用    
#146楼2009-03-27 11:34 | can8640[未注册用户]
It's alway wrong if i call the exterior web service, it tell me that
the method 'Helloworld' or the class 'Service1' is not defining.

  回复  引用  查看    
#147楼2009-04-13 22:37 | dark_arthur      
大概的问题就是原来博主的代码里面(beta版)的命名空间都是
Microsoft.Web
基本上现在都是
System.Web
改起来也是千头万绪,我把新建的工程里的webconfig拷贝到下载的工程里编译就通过了

希望对大家有帮助

  回复  引用    
#148楼2009-04-24 17:26 | yurou[未注册用户]
@liaobing
你是怎么解决弹出DIV的,还请指教.




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 540025





相关文章:

相关链接: