首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表示逻辑还是业务逻辑?

表示逻辑还是业务逻辑?
EN

Stack Overflow用户
提问于 2017-09-28 19:42:51
回答 2查看 259关注 0票数 0

让我们想象一下,我的html页面中有三个按钮。第一个按钮用于选择一辆汽车,第二个按钮用于租车,下一个按钮用于支付租金。这三个按钮都发出一个ajax请求,以便在服务器中执行一些业务逻辑。当用户按下第一个按钮,ajax请求正常时,我将启用第二个按钮并禁用request按钮,而对于第二个和第三个按钮则是相同的。默认情况下,所有按钮都被禁用。如果ajax请求正常的话,这种启用或禁用就在javascript中。我认为启用或禁用按钮或权限是业务逻辑,不应该出现在视图中,而应该出现在服务器中。我的意思是,提出ajax请求以根据用户已经完成的操作获得权限不是更好吗?

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-28 19:50:08

我有两个答案:

  • 有一个ajax请求来获得可用的状态转换是完全合理的。你把它说成是权限,但这并不是真的。权限是根据允许用户执行的操作在用户之间的不同状态。这是在基于业务规则的特定状态下,操作是有效的,这是一件很好的事情,需要得到一个请求。
  • 也就是说,在使用AJAX时,客户端和服务器上通常都有MVC模式。也就是说,除了视图逻辑之外,HTML页面中还有一些视图和控制器逻辑。这个逻辑实现了一些业务规则。Angular和其他客户端框架将这种模式显式化。在这样的应用程序中,服务器视图层很薄。确保在您的服务器中强制执行重要的业务规则仍然很重要,这样攻击者就不会在客户端上破坏这些规则。在这样的应用程序中,在客户端启用按钮是完全合理的,只要服务器确保您没有在没有选择的情况下租用或支付汽车费用。
票数 1
EN

Stack Overflow用户

发布于 2017-09-28 19:49:29

如果您希望服务器端代码决定是否显示next按钮,您可以这样做:

代码语言:javascript
复制
$.get("/api/yourController/yourMethod")
    .success(function (response) {
        if (response == true){ //change this for your unique decision logic
            // execute show button code
        }
    });

根据response对象中从服务器返回的数据,可以控制next按钮是否出现在HTML中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46477098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档