帅的烦躁 2014-09-21 17:18 采纳率: 0%
浏览 1054

jquery访问不到sturts2的action,并且报parsererror

enter code here $(".button :submit").click(function(){
        var params =$(".leavemessage").val(); 
        alert(params);
            $.ajax({
                url:'ajax/doAddMessageByAjax',
                type:"post",
                data:params,
                dataType:"json",
                success: function(data){
                    if(data !=null){
                    $(".message").empty();
                     $(data.userList).each(function (i, message) {  
                    $(".message").append("<li><p>"+value.lcontent +"</p></li>");  
                    });
                    }else{
                        alert("123")
                    }
                },error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest.status);
                    alert(XMLHttpRequest.readyState);
                    alert(textStatus);
                },
            })
        })

上面是jquery代码,用error 方法返回的三个状态分别是 200,4,parsererror.

enter code here<package name="ajax" namespace="/ajax" extends="struts-default">
    <action name="doAddMessageByAjax" class="messageAction" method="AddMessageByAjax">          
    </action>
</package>

sturts2的配置文件

enter code here public String AddMessageByAjax(){
    message.setLip(ServletActionContext.getRequest().getRemoteAddr());
    messageServer.addMessage(message);
    System.out.println("--------------------------------------------------------------------------");
    try {
        ServletActionContext.getResponse().getWriter().print( josnTool.writeListJSON(messageServer.findAllMessage()));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

还有我在网上看见有两种jquery ajax sturts配置的方法 一种是我上面这种,还有一种是在sturts2配置文件里面配 这两种有什么区别,用哪个比较好?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 18:05
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这两种方法在jQuery AJAX和Struts2中实现异步请求的方式略有不同。不过,它们都具有相同的目的:将AJAX操作与Struts2的视图层分离,并通过HTTP响应中的JavaScript来处理结果。

    第一种方法(您提供的示例)

    在这种情况下,$.ajax()调用直接写入到Struts2的<s:action>标签内,然后使用success事件监听器处理AJAX响应。这种方法的优点是可以更清晰地看到请求的状态和错误信息,因为这些信息会直接显示在浏览器中。

    第二种方法

    第二种方法是在Struts2配置文件中定义一个名为AddMessageByAjax的动作,这个动作实现了Struts2的默认行为。当用户点击按钮时,它会触发该动作并执行相应的逻辑。这种方式的优点在于它可以更好地控制全局的资源管理、权限检查等,同时还可以根据需要调整页面结构和布局。

    哪个更好?

    这取决于您的具体需求和团队的偏好。如果您希望保持AJAX操作的独立性并对用户的界面进行精细控制,则第一种方法可能更适合。然而,如果您的应用需要更多的控制权,比如权限检查、数据验证或更复杂的页面结构,那么第二种方法可能是更好的选择。

    总结

    • 优势:第一种方法可以提供更详细的错误信息。
    • 劣势:可能导致页面渲染延迟,因为它依赖于服务器端的处理。
    • 建议:根据项目的具体需求和个人喜好选择合适的方法。
    评论

报告相同问题?