如何在Struts2中获取Ajax响应

时间:2013-12-11 05:32:08

标签: ajax jsp struts2

我已提到此链接Ajax action calling但我无法做到 您好使用ajax进行动作调用。 这是我的代码。

   $.ajax({
            type:'POST',
            dataType:'json',
            url:'ajaxAction?ajax_docno='+entry1+'-'+entry2+'-'+entry3+'-'+entry4,
        success:function(data,textStatus,jqXHR)
                   {
                     if(jqXHR.status==200)
                        alert("success");
                      }
                     if(jqXHR.status==500)
                       {
                           alert("Fail");
                          }
               }


               }
                   );

MY STRUTS.XML

 <action name="ajaxAction" class="com.AjaxActionClass" method="checkExistence" > 
        <result name="success" type="httpheader">
                <param name="status" >200</param>
        </result>
        <result name="fail" type="httpheader">
                <param name="status" >500</param>
        </result>

    </action>

在“我的行动”课程中

 public  String checkExistence()
   {
        //DB checkup
         if exists return success;
         if not exists return fail;
       }

这很好用

在我的动作类中,我正在检查DB中的数据是否存在,并将一些值返回给jSP以显示消息。

我的问题是如果Data不在DB中,如何将变量传递给jsp以向USER显示一些alert消息。

2 个答案:

答案 0 :(得分:2)

有三种方式:

您可以发送JSP或JSON,也可以只发送状态代码。

<强> JSP

$.ajax({
...
success:function(data){
    alert(data);            //In case of JSP
}

<action name="myaction" class="actions.MyAction">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
</action>

<强> JSON

$.ajax({
...
success:function(data){
    var json=eval(data);       //Untested, but should give an idea - JSON
    alert(json.message); 
}


 <action name="myaction" class="actions.MyAction">
    <result name="success" type="json"/>
    <result name="error" type="json"/>
</action>         <!-- for JSON result, don't forget to extend json-default in the package-->

状态

$.ajax({
...
success:function(data,textStatus,jqXHR){
   if(jqXHR.status==200){
       alert('success');
   }else if(jqXHR.status==201){
       alert('failure');
   }
}


<action name="myaction" class="actions.MyAction">
    <result name="success" type="httpheader">
         <param name="status">200</param>
    </result>
    <result name="error" type="httpheader">
         <param name="status">201</param>
    </result>
</action>

(Jquery Ajax文档)(http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:1)

感谢您的回复我的答案没有错,但我现在能够使用以下代码

  $.ajax({
        type:'POST',
        dataType:'json',
        url:'ajaxAction?ajax_docno='+entry1+'-'+entry2+'-'+entry3+'-'+entry4,
      statusCode:{500:function(){alert("The document number is alredy Exist");},
                        200:function(){alert("Good Work !! You can proceed.");}                     }


           }
               );