Questions tagged «ajax»

AJAX(异步Java脚本和XML)是一种用于创建交互式网站的流行技术。

12
终结点返回HTML而不是JSON数据实际上有什么问题?
当我刚开始学习PHP时(大约5或6年前),我了解了Ajax,并且经历了“阶段”: 您的服务器返回HTML数据,并将其放入DOM的 innerHTML中 您将了解诸如XML之类的数据传输格式(然后说“噢,这就是它的用途”),然后是JSON。 您返回JSON并使用原始JavaScript代码构建UI 您移至jQuery 您将了解API,标头,HTTP状态代码,REST,CORS和Bootstrap 您将学习SPA和前端框架(React,Vue.js和AngularJS)以及JSON API标准。 您会收到一些企业旧代码,并在对其进行检查后发现它们执行了步骤1中所述的操作。 当我使用此旧版代码库时,我什至都不认为它可以返回HTML(我的意思是,我们现在是专业人员,对吗?),所以我很难寻找要返回数据的JSON端点。 Ajax调用会填充。直到我问“程序员”,他才告诉我它正在返回HTML,并使用innerHTML直接附加到DOM。 当然,这很难接受。我开始考虑将其重构为JSON端点的方法,并考虑对端点进行单元测试等等。但是,此代码库没有测试。没有一个。超过20万行。当然,我的任务之一是提出测试整个事物的方法,但是目前我们还没有解决。 因此,我无处不在,想知道:如果我们没有任何测试,那么就没有创建此JSON端点的特殊理由(因为它不是“可重用的”:它从字面上返回仅适合该部分的数据)应用程序,但是我认为这已经隐含了,因为它返回HTML数据)。 什么究竟是错这样做呢?
77 design  ajax 

2
什么时候不使用Google Web Toolkit?[关闭]
我正在考虑在一个主要的内部Web应用程序开发项目中使用GWT,即在我眼中,它的主要优势是与Javascript的交叉编译,这将(至少从理论上讲)帮助我的团队将技术堆栈的大小减少一倍。 。 但是,像以前一样(像大多数开发人员一样)被烧掉了,我想听听那些确实在GWT的任何问题上实际使用过它的程序员,这些问题可能会阻碍或限制它在某个问题领域内的使用。 反对使用GWT的理由是什么?为什么?
55 java  javascript  ajax  gwt 

6
隐藏的AJAX请求伪造性能有多安全?
什么是隐藏的AJAX请求? 我注意到,旨在使用户操作立即发生的隐藏AJAX请求的使用率有所增加。我将这种类型的AJAX请求称为非阻塞。这是一个AJAX请求,用户没有意识到它正在发生,它是在后台执行的,它的操作是无声的(没有冗长的指示AJAX调用已成功完成)。目的是使操作看起来确实在尚未真正完成时立即发生。 这是非阻塞AJAX请求的示例; 用户单击电子邮件集合上的删除。这些项目会立即从其收件箱中消失,并且可以继续进行其他操作。同时,AJAX请求正在后台处理项目的删除。 用户填写新记录表格。单击保存。新项目将立即显示在列表中。用户可以继续添加新记录。 为了澄清起见,下面是阻止AJAX请求的示例; 用户单击电子邮件集合上的删除。出现沙漏光标。发出AJAX请求,并在响应时关闭沙漏光标。用户必须等待一秒钟才能完成操作。 用户填写新记录表格。单击保存。带有AJAX加载程序动画的表格会变成灰色。显示一条消息“您的数据已保存”,新记录出现在列表中。 上述两种情况之间的区别在于,非阻塞AJAX设置不提供操作执行的反馈,而阻塞AJAX设置提供。 隐藏的AJAX请求的风险 此类AJAX请求的最大风险是,当AJAX请求失败时,Web应用程序可能处于完全不同的状态。 例如,一个非阻塞示例; 用户选择一堆电子邮件。单击删除按钮。该操作似乎立即发生(项目从列表中消失)。然后,用户单击“撰写”按钮,并开始输入新电子邮件。这时JavaScript代码发现AJAX请求失败。该脚本可能会显示错误消息,但目前确实没有意义。 或者,一个阻塞的例子; 用户选择一堆电子邮件。单击删除按钮。看到一个沙漏,但是操作失败。他们收到一条错误消息,说“错误。等等等等”。它们将返回到电子邮件列表,并且仍然具有要删除的电子邮件。他们可以尝试再次删除它们。 执行非阻塞AJAX请求还存在其他技术风险。用户可以关闭浏览器,可以导航到另一个网站,并且他们可以导航到当前网络中的另一个位置,这使得任何错误响应的上下文都变得毫无意义。 那么为什么它变得如此受欢迎? Facebook,Google,Microsoft等。等等。所有这些大型域越来越多地使用非阻塞AJAX请求来使操作看起来像是立即执行的。我还看到没有保存或提交按钮的表单编辑器有所增加。离开字段或按Enter键。该值已保存。没有您的个人资料已更新消息或保存步骤。 AJAX请求不是确定的,在完成之前不应被视为成功,但是许多主要的Web应用程序正像这样运行。 这些使用非阻塞性AJAX调用来模拟响应式应用程序的网站是否冒着快速出现的代价冒着不必要的风险? 为了保持竞争力,我们所有人都应该遵循这种设计模式吗?

8
如何开始使用HTML5?[关闭]
建议学习HTML5的工作流程是什么?我应该安装什么工具?什么SDK?从哪儿开始?怎么测试?如何调试?我读什么? 我知道通常被标记为“ HTML5开发”的实际上是HTML,CSS,JS和更多内容的混合体,但是我不认为在记事本中开发更大的项目。这就是为什么我要您透露有关工作流程的提示和技巧。
42 javascript  html  css  ajax  html5 

5
Web服务器如何执行同源策略?
我正在更深入地开发RESTful API,到目前为止,已经与一些不同的框架合作来实现这一目标。当然,我遇到了同源策略,现在我想知道Web服务器(而不是Web浏览器)如何实施它。据我了解,浏览器端似乎发生了一些强制执行(例如,遵守从服务器收到的Access-Control-Allow-Origin标头)。但是服务器呢? 例如,假设一个Web服务器托管了一个访问API的Javascript Web应用程序,该API也托管在该服务器上。我假设服务器将执行同源策略---以便仅允许该服务器上托管的javascript访问API。这样可以防止其他人为该API编写JavaScript客户端并将其托管在另一个网站上,对吗?那么,Web服务器如何能够阻止恶意客户端,该客户端试图声称对其API端点发出AJAX请求,同时声称正在运行源自同一Web服务器的javascript?最受欢迎的服务器(Apache,nginx)如何防御这种攻击?还是我对此的理解不合时宜? 还是跨域策略仅在客户端实施?

12
如何使客户脱离Flash网站?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我最近仅通过口口相传的建议就做了很多网络方面的项目。尽管无论如何我都不是一个程序员,而是一个设计师,但是我的设计技能并不可怕,并且不像许多程序员那样讨厌UI。结果,我发现自己被吸引到了一些附带项目中,除了用于内容管理的最小后端外,大多数编程都在前端接口上(请阅读javascript / css)。 到目前为止,我最大的挫败是说服客户他们不希望使用Flash。除了我真的不喜欢Flash“开发”这一事实外,还有很多不希望使用Flash的实际原因(设备之间缺乏兼容性,客户端可访问性下降,插件需求减少,开发时间增加等)。我不只是直言不讳地告诉客户“我不会为您建立一个Flash网站”,而是更愿意使用策略说服/向他们解释这不是他们真正想要的,即:满足他们的要求要比标准html更好/ css / js并分散用户的注意力。 别人对此有什么样的第一手经验?您如何向某人说明javascript / css / AJAX通常是大多数网站的更好选择?为什么人们一开始就想使用Flash这么糟糕? 这个问题适用于那些没有任何技术原因想要使用Flash的客户,只是因为他们认为Flash制作漂亮的网站而想要它。
21 javascript  html  css  ajax  flash 

1
嵌套的REST网址和父ID,哪个设计更好?
好的,我们有两个资源:Album和Song。这是API: GET,POST /albums GET,POST /albums/:albumId GET,POST /albums/:albumId/songs GET,POST /albums/:albumId/songs/:songId 我们知道我们讨厌某首歌,Susy例如。我们应该在哪里search采取行动? 另一个问题。好吧,现在更真实了。我们打开专辑1并加载所有歌曲。我们创建了JS对象,每个对象都保存歌曲数据,并具有如下几种方法:remove,update。 歌曲对象具有ID,名称和内容,但是不知道它属于哪个父对象,因为我们通过查询来检索歌曲列表,因此每个父对象都返回父ID并不是很好。我错了吗? 因此,我看到的解决方案很少,但我不确定。 将父ID设为可选-作为get-parameter。我目前使用的是这种方法,但我觉得它很丑。 List,Create /songs?album=albumId Update,Delete /songs/:songId Get /songs/?name=susy # also, solution for first question 混合动力车 现在方便了,因为我们需要唱片集ID来执行OPTIONS查询以获取元数据。 List,Create /album/:albumId/songs Update,Delete /songs/:songId POST /songs/search # also, solution for first question 返回每个资源实例的完整URL。API是相同的,但是我们会得到如下歌曲: id: 5 name: 'Elegy' url: /albums/2/songs/5 我听说这种方法称为HATEOAS。 所以...提供父母身分证 id: …

1
RESTful HTTP和websocket在同一应用程序中?
如果某个应用程序已经打开WebSocket了实时供稿,是否应该将其AJAX用于与服务器的其他通信? 因为连接已经打开,我们应该将其用于Request/Response不是实时的请求吗? 我更喜欢RESTful HTTP请求,因为我发现它们更易于调试。您可以使用带有url或curl的浏览器来测试API返回的内容。您无需编写代码即可打开WebSocket。 在同一应用程序中拥有RESTful HTTP API和会很奇怪WebSocket吗?
17 rest  ajax  websockets 

5
带有Web API的纯前端JavaScript与带有Ajax的MVC视图
这更多是关于人们近来对如何拆分Web应用程序的想法的讨论。 我习惯于使用其所有视图和控制器来创建MVC应用程序。通常,我将创建一个完整视图,并在一个完整页面请求中将其传递回浏览器,除非我不想立即填充特定区域,然后使用DOM页面加载事件来调用服务器来加载其他区域使用AJAX。 同样,当涉及部分页面刷新时,我将调用MVC操作方法,该方法将返回HTML片段,然后可以使用该HTML片段填充页面的某些部分。这将用于那些我不想减慢初始页面加载速度的区域,或者是更适合AJAX调用的区域。一个示例是表分页。如果您想转到下一页,我希望在AJAX调用获得该信息而不是使用整页刷新的情况下使用。但是AJAX调用仍然会返回HTML片段。 我的问题是。我对这个古老的想法是因为我来自.net背景,而不是纯粹的前端背景吗? 与我一起工作的聪明的前端开发人员,宁愿在MVC视图中什么也不做,而宁愿在前端做任何事情。一直到填充页面的Web API调用。因此,他宁愿返回一个标准对象并使用javascript创建页面的所有元素,而不是调用返回HTML的MVC操作方法。 前端开发人员的方式意味着我通常通过MVC模型验证(包括客户端验证)获得的任何好处都将消失。这也意味着我创建视图,使用强类型html模板等获得的任何好处都将消失。 我相信这意味着我需要为前端和后端验证编写相同的验证。javascript还需要有很多方法来创建DOM的所有不同部分。例如,当向表中添加新行时,我通常会使用MVC部分视图创建该行,然后将其作为AJAX调用的一部分返回,然后将其注入表中。通过使用纯前端方式,javascript将为api调用中的行引入一个对象(例如产品),然后从该对象创建一行。创建表行的每个单独的部分。 有问题的网站将在管理,表格,产品搜索等方面有很多不同的领域。我认为不需要以单一页面应用程序方式构建的网站。 大家对此有何想法? 我很想听听前端开发人员和后端开发人员的意见。

1
许多异步调用与对API的单次调用
我们正在开发REST API,其中的HTML5前端将通过javascript使用REST API。该应用程序供组织内部使用,通常有大约300个用户,但我们希望扩展到1000个左右的用户。 通常不会在LAN内建立与API的连接,因此连接的质量和延迟会很好,尽管不排除偶尔会在Internet上使用3G / 4G时连接速度较慢且滞后时间较长的情况。 我们认为的两个选择是: 前端将同时对API进行多次异步调用,以加载接口的各个组件。 优点:简单。 缺点:与服务器的连接更多。 前端的控制器将对API进行一次调用,将需要获取的对象作为参数传递给参数。 优点:尽管服务器将与数据库建立多个连接,但仅与服务器建立一个连接。 缺点:在前端和API中都需要机制。它使设计复杂化。 进一步说明:将有不同的资源... /产品... /位置等。可以单独获取这些资源,但是将有另一个抽象资源... / screen?Product&Locations将在一次调用中获取。
12 rest  api  ajax 

1
大量使用Ajax的Web应用程序的模式
到目前为止,我一直是开发Web应用程序的MVC模式的忠实拥护者。对于网络,我主要使用PHP(使用Kohana和CodeIgniter框架)和Ruby(RoR)开发。 随着我的应用程序在Ajax方面变得越来越繁重(单页应用程序等),我注意到我不禁出卖了MVC的最基本概念:Java语言正在做大部分工作;调用控制器只是为了请求视图或更多js / json代码似乎是错误的。 在努力将所有路由作业保留在控制器中之后,现在我从根本上将其分配给控制器和Javascript(即,从框架的PoV来看,是视图的一部分)。当请求json时,MVC的转换看起来更加明显:执行请求的js代码是控制器;框架的控制器仅充当模型数据的代理-实际上是我要的。 那么,我应该研究什么? 我当时在考虑使用纯JavaScript应用程序,例如,使用ribs.js和基于文档的JSON吐出数据库(couchDB)作为后端,但是我喜欢我的关系数据库。 另一个选择如下:我只是在PHP / ruby​​ / go / whatnot中创建“路由模型”。这些将分析请求,调用数据库,并返回一些json。 这种方法对我来说似乎很有趣,但是它没有任何实质性的文档或学术分析,因此我有点害怕这种飞跃。 有想法吗?

3
什么时候使用REST处理请求与使用AJAX处理请求[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 6年前关闭。 在我的网页上,如果希望显示动态下拉列表(例如,基于所选国家/地区的城市名称),则可以使用AJAX进行。但是我也可以使用REST调用来做到这一点。那我应该使用哪个呢? 我的问题是我真的没有得到REST和任何其他HTTP浏览器请求(也就是表单提交)之间的区别。我查看了REST的正式定义,它似乎与HTTP请求相同。那么REST与AJAX本质上有何不同?
12 rest  ajax 

3
缓存排序/属性可以更改的分页结果的最佳实践是什么?
缓存排序/属性可以更改的分页搜索结果的最佳实践是什么? 假设在我的应用程序中,有人想要查看最近的20个讨论线程(在10,000个线程中)。一个请求将通过发送到数据库,servlet以XML / JSON形式从讨论线程表中获取前20条记录。如果他们随后要查看下一个20,则转到结果的下一页,这会触发另一个请求以获取下一个批次(限制和偏移= 20,依此类推)。 为了减少服务器负载和客户端等待,我想缓存结果的前几页。但是,我有两个问题: 结果显示的表可以按多个属性(即,线程创建日期,线程作者,最后发布日期)排序。这意味着没有上下文(即我们排序的依据)之类的“前20个结果”这样的语句是没有意义的。然后,前端如何与后端通信已加载的内容?我的第一个想法是对每个结果使用ID,但是在随后的请求中将它们发送回服务器(并根据它们过滤结果)就像将所有内容盲目地发送回一样耗时。我怎样才能做到这一点? 如果先前返回的结果的属性(即最新日期)改变了怎么办?然后,我们需要一种检查每个结果的方法,以查看自页面调入以来是否已在服务器端对其进行了修改。我该怎么做?

8
有必要记住代码吗?
我是一名新开发人员,刚在一家大公司被录用。我不知道该怎么做,但我想他们很拼命。但是,尽管情况有所变化,并且发布了新内容,但我对HTML5 / CSS3还是很精通,我会尽可能地跟上。但是这项工作需要我手动编写Java脚本,并了解Jquery和Ajax。我对此有所了解,但不确定是否可以手动编写Java代码。 我的问题是,是否有必要记住所有有关Javascript的内容,或者是否有一些我应该知道如何手工编写代码的关键内容,因为查看JavaScript代码似乎有很多行代码! 请指出正确的方向。
10 javascript  html  jquery  ajax  css3 

4
业务逻辑真的属于服务器吗?
Web应用程序的典型堆栈是数据库,具有服务器端代码的服务器以及具有HTML / CSS / JavaScript的浏览器的用户。 在广泛使用AJAX之前,已将控制器作为服务器端代码的MVC删除了。服务器必须为动态网页路由答复请求(即,模板化的html解决方案,如JSP和ASP)。服务器协调对数据库的调用,并决定使用哪个动态页面来应答页面请求。所有这些的结果是,服务器最终包含了业务逻辑,即使业务逻辑与提供页面的想法没有紧密联系。 现在,我们正在向“ Web 2.0”迁移,服务器将使用JavaScript填充静态页面并更改其呈现的服务器。可以在JavaScript中。JavaScript通常实现RESTful服务,这意味着它正在指定数据库查询。 因此,服务器将承担提供实际文件和应答AJAX调用的角色。应答AJAX呼叫仅仅是会话管理和提供安全性。实际上,用户甚至应该能够看到的是应该在数据库中指定的数据。 因此,从那里开始,服务器是否应该只充当笨拙的中介角色,而这种中介只是偶尔发送电子邮件或启动Web服务之类的功能?业务逻辑可以全部存在于JavaScript中(不是秘密时)还是存在于存储过程中吗? 甚至将服务器和数据库结合在一起,或者使像SAP这样的ERP解决方案作为服务器,是否有意义?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.