1

我向一个类发送一个 Ajax 请求Action并尝试从Result.
这是我的 jQuery 代码:

$('#button').click(function(){                    
            $.get('ajax.action','query="hi server:)")',function(x,r,s){                    
            alert("server said :"+r+"-stat-"+s.status);                    
            })

这里的响应总是“成功”,而不是预期的响应。
这是我的 Action 类的 execute()。

String response;
String query;
     @Override
    public String execute() throws Exception {

        response=query+" - Struts added :";        

        setResponse(response);

        return SUCCESS;
    }  

已经编写了用于字符串响应和查询的 getter 和 setter(此处未显示)。
这是我的Result

public class AjaxResponse implements Result {

@Override
public void execute(ActionInvocation ai) throws Exception {

    System.out.println("I am the Ajax Rsponse RESULT");// this is displayed in the console
     PrintWriter out =
                ServletActionContext.getResponse().getWriter();
    try {
        ServletActionContext.getResponse().setContentType("text/plain");

        ValueStack valueStack = ai.getStack();
       // Object resObj= valueStack.findValue("response");
        out.print("hi I am server ...");

        System.out.println("Response WROTE---");
    } catch (Exception e) {
        e.printStackTrace();

    }finally{

    out.close();
        System.out.println("Response Close "); // this is displayed in the console
    }        
}

}

这是我如何将 Result 类添加到 struts.xml

 <result-types>        
        <result-type name="ajaxResponse" class="com.app.ajax.AjaxResponse" />  
 </result-types>  

这是我宣布行动的方式

<action name="ajax" class="com.app.action.AjaxSupport">
        <result type="ajaxResponse"/>
    </action>

警报总是只给出SUCCESS,而不是预期的结果 'hi I am server ...' 。
控制台显示 Result 类的打印结果-("I am the Ajax Response RESULT","Response WROTE---","Response Close") 我使用了一个单独的 Result 类来松散耦合任务并在操作中执行业务逻辑班级。
请任何人让我知道我的问题在哪里?

4

1 回答 1

1

问题不在于 Struts,而在于我检查结果是否正确。

$.get('ajax.action', 'query="hi server")', function(x, r, s) {                    
    alert("server said: " + r + "-stat-" + s.status);              

根据此警报,输出为:

server said: success-stat-200

问题是看到这个成功。与回调函数的参数混淆。

'r'是响应的状态(我认为是响应), s 是xmlHttpRequest对象。

我不得不检查 not r,但这x是真正的预期值。打印 x 的值,出现服务器发送的真实值。

于 2012-06-25T01:02:35.367 回答