scriptmanager比直接jquery ajax调用有什么好处?

时间:2009-12-02 22:38:44

标签: asp.net javascript jquery ajax json

我对使用scriptmanager和ajax调用的好处或者使用JQuery来引导调用webmethods感到有点困惑。

有人可以给我一些关于这个问题的提示吗?什么时候用哪个?处理JSON时有什么不同吗?

2 个答案:

答案 0 :(得分:3)

我认为MSDN ScriptManager control page在总结功能方面做得很好 -

  
      
  • 注册与部分页面更新兼容的脚本。

  •   
  • 为了管理依赖项   你的脚本和核心之间   库,您注册的任何脚本   在Microsoft AJAX之后加载   图书馆脚本。

  •   
  • 指定是否将发布或调试脚本发送到浏览器。

  •   
  • 通过注册Web从脚本访问Web服务方法   使用ScriptManager提供服务   控制。

  •   
  • 提供对ASP.NET身份验证,角色和配置文件的访问权限   客户的应用服务   脚本通过注册这些服务   使用ScriptManager控件。

  •   
  • 启用ECMAScript(JavaScript)日期的特定于文化的显示,   数字和字符串函数   浏览器。

  •   
  • 访问嵌入式脚本文件或for的本地化资源   使用的独立脚本文件   ResourceUICultures的属性   ScriptReference控件。

  •   
  • 注册实现IExtenderControl的服务器控件   IScriptControl与之接口   ScriptManager控件使脚本   客户组件和   行为呈现。

  •   

基本上,ScriptManager完成了它所说的内容,管理你的脚本而不用太多担心你自己编写JavaScript“胶水”来自己做。

当然,包含ScriptManager控件的开销(可能有些可能很重要),尤其是对脚本资源的额外请求数量以及生成的代理类调用Web服务和页面方法的大小。在开发内部网应用程序时,这可能不是那么重要,因为与开发互联网应用程序相比,带宽和网络速度可能不是一个问题,但重要的是要注意这一点。

如果您对能够替换ScriptManager的所有功能的JavaScript库感到满意,同时重量更轻且完成工作的速度更快,那么这听起来像是不使用ScriptManager的好例子。 / p>

在处理JSON方面,jQuery和ScriptManager都处理得很好。 IIRC,JSON是.NET中的页面方法和Web服务的默认数据类型(虽然有些事情提醒我并非总是如此)。

答案 1 :(得分:2)

WRT Ajax电话?很少。 非常很少。通过jQuery,ASP.NET AJAX框架有一些可能的好处:

  1. 语法。该框架允许您使您的Web服务调用看起来像您真正调用一些本地方法并传递它参数:

    MyNamespace.MyWebservice.MyMethod('arg1value', 'arg2value', onResult);
    

    请注意框架版本如何知道Web服务方法的参数顺序。

    jQuery的.ajax要求设置管道来调用ASP.NET AJAX Web Service方法。关于fairly,这是最小的并且是博客。 well

    $.ajax({
      type: "GET",
      url: "MyWebservice.asmx/MyMethod",
      data: '{"arg1":"arg1value","arg2":"arg2value"}',
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(data) {
        onResult(data.d) // ASP.NET returns payload in `".d"` property
      }
    });
    
  2. 用于将args传递给Web服务的JSON 序列化:ASP.NET Ajax框架具有Sys.Serialization.JavaScriptSerializer.serialize,可以“在幕后”序列化Web服务参数。只有jQuery可能必须包含第三个库,例如json.org的JSON.stringify 1 。这太可以忽略不计了。

  3. 硬编码GET和POST请求类型。由于框架为您生成了WebService类定义的JavaScript客户端代理,因此您通常不知道(或关心)客户端中的HTTP请求方法。您只需在Web Service类的ScriptMethod属性中设置它,然后从客户端调用它。使用jQuery,您必须知道它才能将其作为.ajax选项传递给type

  4. 至于非Ajax的好处, @Russ Cam 已经将它们总结为ya。


    1 内置于FF 3.1IE8已经