更新:也许这在我原来的帖子中并不清楚,但我主要想知道在构建解决方案时如何构建javascript代码的最佳实践,而不是简单地学习如何使用API(虽然这当然很重要)。
我需要为网站添加功能,我们的团队决定使用Web服务来接近解决方案,该服务从网站内接收来自JSON格式的AJAX请求的调用。 Web服务已创建并且运行良好。现在我的任务是编写解决方案的javascript / html方面。
如果我在 C#中解决了这个问题,我会创建单独的类来格式化请求,处理AJAX请求/响应,解析响应,最后以某种方式将响应插入到DOM中。我会在每个类中适当地构建属性和方法,尽可能在适当的时候分离功能和结构。
但是,我必须在 javascript 中解决此问题。首先,我如何以我从C#接近它的方式在javascript中处理我的解决方案?或者更重要的是,在javascript中使用结构化代码的更好方法是什么?
非常感谢任何有关网络上有用资料的建议或链接。
注意:虽然可能与这个问题没有直接关系,但值得注意的是我们将在我们的解决方案中使用jQuery。
答案 0 :(得分:6)
如果您正在使用jQuery,那么您已经拥有了一组丰富的Ajax工具。一旦你开始编写代码,我怀疑你会发现,考虑到框架中已有的功能,没有你想象的那么复杂。 研究jQuery API!
编辑至于构造代码,我再次提出建议,考虑以自己的jQuery插件的形式添加功能。它很容易做到,它可以(如果小心),使您的代码可维护和可重用。我花了一段时间来思考这样的事情;在习惯jQuery时,我倾向于根据实用程序来思考,我将jQuery对象作为参数传递:
function myCode(jq) {
if (jq.is('div')) {
// ...
}
}
现在我在我的旧代码中找到那些并且蠕动,因为它们确实应该作为jQuery插件完成:
jQuery.fn.myCode = function() {
if (this.is('div')) {
// ...
}
return this;
};
使用这些小插件比使用我最初编写的笨拙功能更清晰。
当然不是所有事情都可以或应该这样做;这只是我经验中的一些建议。
答案 1 :(得分:4)
我即将推荐JQuery - 它非常适合处理JSON / AJAX请求。
听起来你的主要关注点是封装;你想分开你的担忧。 Javascript与C#有不同的感觉,用于创建OOP解决方案,但您仍然可以利用Javascript的许多OOP功能。这是开始使用Javascript的OOP功能的好地方:
http://www.javascriptkit.com/javatutors/oopjs.shtml
最后,您可以创建一个类来处理您的每个需求(格式化,执行AJAX查询,处理AJAX响应):
$.DataHandler = new function()
{
this.MyData = "Default Value",
this.FormatData = function() { return this.MyData; }
this.HandleResponse = function(data) { ... do something ... }
this.DoAJAX = function()
{
$.ajax({
type: "GET",
url: "/path/to/your/ajax",
data: this.FormatData(),
dataType: "json",
success: this.HandleResponse
});
}
}
我没有测试过上面的代码,但是你明白了。之后,您可以这样做:
$.DataHandler.MyData = "Some other data";
$.DataHandler.DoAJAX();
无论如何,这是基本的想法。根据您的风格和要求,您可以使用Javascript进行大量的OOP /封装。
-Doug
答案 2 :(得分:2)
实际上你使用jQuery的事实非常重要。 jQuery将为您提供许多您将以其他方式抽象或封装的内容。例如。只是使用Javascript,您可能希望封装基于浏览器的Request对象的创建。 jQuery会为您处理此问题,并使用$.ajax()
及其亲属$.get
和$.post
来处理响应。根据您对返回信息的处理方式,不要过度构建您的javascript并执行以下操作,这是完全可以接受的:
$.get('TestService.asmx/HelloWorld', function(data) {
$('#resultElement').html(data);
});
请记住,javascript必须由客户端加载,除非必须,否则不要权衡它。您习惯使用C#的许多OO原则并不是必需的。
答案 3 :(得分:2)
如果您使用的是jQuery,它应该非常简单,大部分背景内容(格式化请求,处理响应等等)都是为您完成的。
你可能想看看jquery.getJSON()
具体来说,回调函数将处理返回的JSON - 您将解析数据...等等
答案 4 :(得分:2)
这就是人们使用jQuery的那种东西。它涵盖了Ajax和DOM操作,因此learning jQuery站点和jQuery docs应该可以帮助您共同破解。
一般来说,JavaScript很难处理,因为它看起来就像典型的Algol家族语言,但却以微妙的方式行为不端。 (例如,JavaScript确实不具有块范围。)如果您想投入一些时间,那么要获得的基本书是Javascript: The Good Parts。作者在website上有一些有趣的文章。
你的设计,顺便说一句,非常好,JS是面向对象的,所以你当然可以实现它。 JS只是对主流OO语言进行了不同的继承和封装(分别是原型和封装)。在上面引用的书中已经详细介绍了这一点。