2014-01-29 3 views
2

Мой код заключается в следующем:

${remoteFunction(controller:'user', action:'clearCache', 
params:'\'&cacheUserId=\' + cacheUserId + \'&pageName=\' + pageName', 
onSuccess: 'onSuccess()', 
onFailure: 'onFailure()') }; 

в моем методе действия контроллера

clearCache(){ 

    def status = getBusiness(); // this method returns boolean only. 
    if(status==true){ 
    render "Success"} 
    else render "Failure" 
} 

новый он звонит OnSuccess() Javascript функция всегда.

, так что я удалил еще блок, а затем не вызвал onFailue/onSuccess в случае состояния false.

Могу ли я узнать, когда onFailure вызовет, как я могу заставить его позвонить, если статус является ложным.

ответ

2

метод

onSuccess (optional) - The JavaScript function to call if successful 

означает, что если ваш успех контроллер (как в этом коде), чем этот метод называют

onFailure (optional) - The JavaScript function to call if the call fails 

означает, что если ваш контроллер не работают (ERROR 404 в примере), чем этот метод называется

вот почему onSuccess всегда вызывается в вашем коде.

Решение я думаю, вы можете перейти к вашей OnSuccess парам функции данных:

<script type="text/javascript"> 
    function onSuccess(data,textStatus){ 
     alert(data) 

     } 

    </script> 

В данных вы можете найти обработанный ответ. С уважением

+0

Я пробовал это, но javascript console sais _'data не определен'_ – IgniteCoders

2

Вы должны изменить свой код контроллера, чтобы явно отправлять соответствующий код состояния HTTP, когда происходит что-то «исключительное». Метод render позволяет это через атрибут status.

clearCache(){ 
    def status = getBusiness(); // this method returns boolean only. 
    if(status==true){ 
     render "Success" // implicit status of 200 
    } 
    else render(status: 403, text: "Failure") 
} 

Как его не ясно, какой провал происходит в этом примере, я не уверен, какой код состояния, чтобы указать, так что я пошел с 403, но вы должны прочитать status code definitions и выбрать лучшее один для ваших обстоятельств.

Как сказал @alessandro, onSuccess запускается кодом состояния 2XX HTTP, и большинство других кодов вызывает обратный вызов onFailure.

Смежные вопросы