2015-08-19 2 views
2

Я хочу вернуть две разные страницы jsp из struts.xml, используя ajax-вызов, основанный на «успехе» или «сбое».Ajax call всегда вызывает функцию ответа успеха

мой Аякса метод:

$.ajax({ 
    url: url, 
    success: function(data) { 
     $('#page-area').html(""); 
     $('#page-area').html(data);    
     $('#modal_new-pack').modal('show');  
    }, 
    failure: function(data) { 
     $('#page-area').html(""); 
     $('#page-area').html(data);    
    }, 
    cache: false 
}); 

Мой struts.xml является:

<action name="modify" class="com.test.ennt.action.CorporateAction" 
      method="modify"> 
    <result name="success">/jsp/VF_ManageSuccess.jsp</result> 
    <result name="failure">/jsp/VF_ManageError.jsp</result> 
</action> 

и способ действия:

public String modify() { 
     corporate = corporateManager.getCorporate(getCorporateID()); 
     if (corporate == null) { 
      return "failure"; 
     } 
     this.disable = "true"; 
     return "success"; 
    } 

на основе значения, возвращаемого из моего действия метод и struts.xml ошибка/результат успеха Мне нужно показать мою страницу jsp. Но ajax всегда выполняет функцию ответа «успех».

+0

FYI не ключевое слово не является «ошибкой», это 'error' – RRK

+0

Ваша функция возвращает либо отказ, либо успех. В обоих случаях это фактически возвращает что-то. Это означает, что если он что-то возвращает, то вызов ajax является успешным. Ключевое слово failures в вызове ajax имеет значение true, когда вызов ajax не выполняется, что происходит, когда вызываемая функция (modify()) недоступна или ошибка сетевого подключения. Кстати, ты Ория? @rojalinbiswal – Saswat

+0

Дает вам возвышение. Этот вопрос поможет другим разобраться в своих путаницах. – Saswat

ответ

0

Вы ошибаетесь, сообщение, которое вы вернетесь в ответ, будет переходить в метод успеха.

Вы можете сделать результат.

Например:

$.ajax({ 
    url: url, 
    success: function(data) { 
    if(data=="success"){ 
     $('#page-area').html(""); 
     $('#page-area').html(data);    
     $('#modal_new-pack').modal('show'); 
    } 
    else 
    { 
     $('#page-area').html(""); 
     $('#page-area').html(data); 
    } 
    } 
    cache: false 
}); 
0

Когда есть ошибка происходит на сервере, функция ошибки вызывается. Не зависит от возвращаемого значения.

$.ajax({ 
    url: url, 
    success: function(data) { 
     if($.trim(data) === 'success'){ 
      $('#page-area').html(""); 
      $('#page-area').html(data);    
      $('#modal_new-pack').modal('show');  
     } else { 
      $('#page-area').html(""); 
      $('#page-area').html(data); 
     } 
    }, 
    error: function() { 
     alert('Error') 
    }, 
    cache: false 
}); 
+0

Привет, Спасибо за ваш ответ. Но мой $ .trim (data) - это контент страницы jsp, как он может быть таким же, как «успех», он никогда не будет таким же. Я проверил с data.success, но это придет как неопределенное или успешное. –

+0

@rojalinbiswal привет, вы пытались alert/console.log для данных? – RRK

+0

Да, я попробовал i его содержимое моей jsp-страницы. Так что мне нужно изменить тип результата в struts.xml –

0

в $ .ajax провал действительно означает статус ошибки HTTP

  • коды HTTP Status 100-101 - Информационные коды статуса
  • HTTP Status Codes 200-206 - Успешные коды состояния
  • HTTP Коды статуса 300-307 - Коды статуса переадресации
  • Коды статуса HTTP 400-416 - Коды состояния ошибки клиента
  • HT Коды TP статуса 500-505 - Серверные коды состояния ошибки

Я думаю, что два VF_ManageSuccess.jsp и JSP VF_ManageError.jsp оба возврата HTTP код 200 состояния;

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