2011-09-07 35 views
1

用戶在表單上輸入一些數字和其他數據後,計算總計。用戶也可以選擇輸入折扣金額。我使用jQuery AJAX方法將所有數據發送到Load控制器中的getTotal方法。如果用戶輸入的折扣金額大於計算的總額,我希望彈出一個消息框(類似於一個JavaScript alert框),表示折扣必須小於總額。有沒有乾淨的方式從控制器做到這一點?如何在控制器中顯示消息框?

回答

1

這是我做的。在我看來,我在我的一個JavaScript方法中有下面的代碼。我使用jQuery的getJSON而不是ajax,因爲它似乎更適合(更清潔)。

$.getJSON(
    "/truckingmanagement/load/getTotal", 
    {cargoSource:cargoSource, cargo:cargo, haulRate:haulRate, tonnage:tonnage, mileage:mileage, discount:discount, taxExempt:taxExempt}, 
    function(result) { 
    if(result.message != null){ 
     alert(result.message); 
     $("#discount").val(""); 
     $("#totalCell").html(result.total); 
    } 
    else{ 
     $("#totalCell").html(result.total); 
    } 
    }); 

我我的控制器我還是用我的瓶蓋內的render方法,但修改它JSON,確保import grails.converters.*

render(contentType:"text/json") { 
    total = g.textField(name: 'total', value: totalBill, readonly: 'readonly') 
    message = errorMessage 
} 

totalBill值已經在調用render計算,errorMessage僅僅是包含基於什麼樣的錯誤是消息(否定的折扣值優惠價值超過總更高版本)或者沒有消息在所有的字符串。因此,如果消息是null,則不會顯示消息。

1

不可以。您希望將結果發送回您的ajax響應中,告訴客戶端顯示消息框。那麼你可能會使用JavaScript來顯示它。有很多用於顯示消息框的jQuery插件。例如:jQueryUI's Dialog

+0

現在我的控制器使用'render'在文本字段中渲染總數,然後通過AJAX將其作爲HTML發回。如何渲染總數並在同一個AJAX調用中渲染消息? – ubiquibacon

+1

你需要返回一組不同的數據。例如,某些包含數據的JSON以及顯示消息框的內容。使用JavaScript更新文本字段,而不是發送整個HTML。 – Gregg

0

我認爲在技術上可以讓你的控制器生成javasacript作爲對ajax調用的響應,但這樣做會非常難看。

更好的是發送JSON。例如:

result = [] 
result.success = total >= discount 
result.total = total 
render result as JSON 

而在Ajax調用中,檢查成功,顯示成功時總數,如果不成功則顯示消息。