2017-09-28 280 views
0

讓我想象我的html頁面中有三個按鈕。第一個按鈕用於選擇汽車,第二個按鈕用於租賃該汽車,而下一個按鈕用於支付租金。所有這三個按鈕都會發出ajax請求來在服務器中執行一些業務邏輯。當用戶按下第一個按鈕並且ajax請求正常時,我啓用第二個按鈕並禁用de第一個按鈕,第二個按鈕和第三個按鈕也一樣。默認情況下,所有按鈕都被禁用如果ajax請求正常,則啓用或禁用該功能。我認爲啓用或禁用按鈕或權限是商務邏輯,應該不存在於視圖中,而是存在於服務器中。我的意思是,根據他已經完成的操作,通過ajax請求獲取用戶擁有的權限會更好嗎?演示邏輯或業務邏輯?

非常感謝

回答

1

有兩個答案,我有:

  • 這是完全合理的有一個Ajax請求得到可用的狀態轉換。你把它看作是權限,但這不是真的。根據用戶被允許執行的操作,權限在用戶之間有所不同。這是基於業務規則給定特定狀態的操作是有效的,這是獲得請求的好方法。

  • 也就是說,在您使用AJAX時,在客戶端和服務器上都有一個MVC模式是很常見的。也就是說,除了視圖邏輯以外,在HTML頁面中還有一些視圖和控制器邏輯。這個邏輯實現了一些業務規則。 Angular和其他客戶端框架使這樣的模式更加明確。在這樣的應用程序中,服務器視圖層很薄。確保在您的服務器中執行重要的業務規則仍然很重要,以便攻擊者不能在客戶端上顛覆這些規則。在這樣的應用程序中,只要服務器確保您沒有選擇租用或支付汽車費用,就可以在客戶端啓用按鈕將是完全合理的。

1

如果你希望你的服務器端代碼是否顯示下一個按鈕,你可以做這樣的事情上決定:

$.get("/api/yourController/yourMethod") 
    .success(function (response) { 
     if (response == true){ //change this for your unique decision logic 
      // execute show button code 
     } 
    }); 

基於這些數據,您從您的服務器返回在response對象中,您可以控制下一個按鈕是否出現在HTML中。