小妖女 发表于 2015-1-16 22:46:22

ASP.NET网页设计为AJAX使用程序构建一个毛病提交体系

那做企业软件是不是最好用J2EE?ajax|程序|毛病  择要当一些使用程序溃散时,它们常常向用户供应一个时机来提交关于该毛病的信息。该信息可以匡助开辟者追踪并修改毛病。本文将向你展现怎样在你的JavaScript/AJAX使用程序中完成如许的功效。

  1、弁言

  假如能够存取终端用户的盘算机的话,那末终端用户的JavaScript毛病就很简单调试。既然你不克不及完成如许的操纵,那末你能够接纳上面如许的措施:让用户向你发送你修改该成绩必要的内容。

  当象Mozilla扫瞄器如许的使用程序溃散时,它们会启动一个毛病提交程序。这些程序将扣问用户是不是乐意提交织误呈报。假如用户乐意的话,该程序将请求他们输出有关他们的程序溃散时的尽量多的信息。这个信息,连同该毛病提交程序本人的剖析数据,一同提交到电子邮件中央以便开辟职员和工程司理读取剖析。

  这类功效关于开辟者是极为有效的。既然该程序运转于客户端呆板上,这是独一获得有关于开辟者不克不及在他们本人的开辟体系上从头天生不异的毛病信息的体例。他们还可以监督该特定的毛病的频次和严峻性以便决意应当起首修改哪些毛病。

  本文将向你展现怎样在JavaScript/AJAX程序中撑持这类毛病提交功效。当在你的代码中产生一个毛病时,该体系将弹出一个用户可以提交织误信息的窗口。

  2、成绩

  怎样在我的JavaScript/AJAX使用程序中安装一个用户毛病提交程序?

  3、解答

  把代码放到一个包装程序中,该包装程序同意用户提交一个包括具体毛病信息的电子邮件。

  (一)捕捉毛病

  以下文件被包含在本文响应的下载源代码中,你能够使用它们来完成下面的办理计划:

  ・talkback.js-这个文件包含本体系的完全源码

  ・test.html-一个利用talkback.js来处置一个发明毛病的示例剧本

  这里的test.html页面包括一些JavaScript代码,个中抛出一个非常。这个页面把函数fun_a()安装为body部分的onload处置器。该fun_a()函数又挪用fun_b(),fun_b()又挪用fun_c()。最初,fun_c()存取一个不存在的工具中的不存在的域,并触发一个真实的JavaScript非常。

  起首,在用户可以看到这个毛病之前你必要捕捉它。如许以来,你就可以够利用户有一个时机来提交织误信息;可是,你不想让他或她的看就任何别的内容。我们的方针是只管削减该毛病向用户表露的内容。

  这是很简单完成的。假定主程序能够经过以下函数激活:

functionfun()
{
 //程序在此.
}
fun=tb_wrap(fun);  请注重这里对tb_wrap()的挪用。如许以来,就能够把fun()函数放到一个可以捕捉任何非常而且处置它们的包装器中。并且,如许以来,该用户就不会看就任何产生在fun()中的非常。

  (二)搜集毛病信息

  一旦你捕捉了毛病,那末你必要提取尽量多的信息。你把越多的毛病数据发送回开辟者,他们越有大概发明并修改该毛病。

  遗憾的是,依据用户运转的扫瞄器分歧,毛病工具具有分歧的属性。年夜多半情形下,你可以依附name和message属性。注重,stack属性中包括一个极为有效的栈踪影,只是它仅可用于比来版本的基于Mozilla的扫瞄器中。
<P>  (三)创立一个Mailto:链接

  为了利用户可以向你发送关于该毛病的信息,你应当供应给他们一个他们可以点击的链接。如许很好,由于它让这些用户本人决意愿不肯意受贫苦,并且他们可以制止发送多份不异的毛病呈报。

  这个mailto:链接可以翻开用户的电子邮件程序,然后就象上面如许添补邮件的Subject和Body域:

Subject:Errorfromhttp://myserver.com/myapp/index.cgi?id=234
Body:

ReferenceError:nonexistent_variableisnotdefined
fun_c()@http://myserver.com/myapp/index.cgi?id=234:19
fun_b()@http://myserver.com/myapp/index.cgi?id=234:14
fun_a()@http://myserver.com/myapp/index.cgi?id=234:9
apply(null,)@:0
()@http://myserver.com/myapp/livedebug.js:106
onload()@:0@:0
  用户可以增加他们喜好的别的的任何信息,然后发送该动静。

  (四)完成细节

  上面这些函数界说在talkback.js文件中:

  ◆tb_wrap(fun)-这个函数卖力把函数fun放到一个包装器中,由该包装器捕捉任何非常而且向用户供应一个时机来把这些毛病发送回开辟者。当产生一个非常时,它把该毛病工具增加到一个非常列表而且向该用户供应一个提交链接。假如任何更深的非常产生,那末它将把它们增加到非常列表和提交链接。

  ◆tb_show_talkback_link()-这个函数显现一个小型浮动窗口,它可以向用户供应一个时机来提交一个毛病:"Anerrorhasoccurredinthispage.Toreportthiserror,pleaseclickhere:ReportError"。

  ・这个窗口仅在第一次产生非常时呈现,而且它停在别的窗口内容之一。假如更深的非常产生,那末它们的信息会被增加到现有的mailto:链接上。

  ・tb_set_link_contents()-在每次抛出一个非常时,都把它增加到一个列表上。然后,扫描全部列表以发明有效的信息,然后把该信息打包到一个mailto:链接中。当在第一次抛出非常时显现这个链接,然后一向显现。

  4、小结

  如今,开辟者正在愈来愈多地利用JavaScript和AJAX手艺创立具有丰厚特性的使用程序。因而,关于使用程序级撑持的必要也响应地增加。本文中供应的这个小型回馈体系大概有助于汇集到有关一个毛病的尽量多的信息而且向用户供应一个mailto:链接用来提交这一信息。固然,该用户可以增加任何大概匡助捕捉该毛病的别的的信息。说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。

冷月葬花魂 发表于 2015-1-19 23:19:19

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

蒙在股里 发表于 2015-1-26 10:00:44

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

兰色精灵 发表于 2015-2-4 14:13:47

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

飘灵儿 发表于 2015-2-10 01:18:48

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

乐观 发表于 2015-2-28 12:11:29

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

精灵巫婆 发表于 2015-3-9 23:04:43

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

分手快乐 发表于 2015-3-17 03:09:14

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

因胸联盟 发表于 2015-3-23 17:57:46

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
页: [1]
查看完整版本: ASP.NET网页设计为AJAX使用程序构建一个毛病提交体系