对Struts2动作类的jQuery Ajax请求总是返回200 ok,但是会触发error事件

时间:2017-03-22 09:28:27

标签: javascript jquery ajax struts2

我是 Struts2 的新手,我将把一组表单数据发送到struts动作类。

这是我在jsp中的Ajax代码

$.ajax({
    method: "POST",
    url: "getProjectPost",
    data: { "language" : langArr , "clientId": clientId, "projectName": projectName, "projectType": projectType},
    traditional: true,
    success:
        function()
        {
    	alert("Success");
        },
    error: 
	   function()
        {
    	 alert("Error");
        }
});

这是我的struts.xml

<package name="projectPost" namespace="/" extends="struts-default">
    <action name="getProjectPost" class="com.test.ProjectPostAction" method="execute">
        <result name="success" type="redirect">
        <param name="location">/webpages/Client/Success.jsp</param >
        </result>
        <result name="failure">./LandingPage.jsp</result>
        <result name="error">./error.jsp</result>
    </action>
</package>

Ajax请求返回200 OK,但始终警告“错误”。我提到了许多文章,但仍然没有得到适当的解决方案

2 个答案:

答案 0 :(得分:1)

您在执行ajax请求时发送结果redirect。 Ajax请求不会将您重定向到另一个位置,它会在请求时保留在同一页面上。

更改

<result name="success" type="redirect">

<result name="success" type="dispatcher">

dispatcher是默认结果类型,它将在指定位置呈现JSP并将响应HTML写入out。可以使用jQuery轻松地将此响应加载到同一页面上的任何div

答案 1 :(得分:1)

是的,你可能会得到响应200 OK仍然在ajax请求中执行错误回调,因为来自请求的url的响应是空的。

因此,您必须检查服务器端代码,为什么响应为空或与后端开发人员联系。

要获得更多钙化,您可以使用以下代码。

$.ajax({
    method: "POST",
    url: "getProjectPost",
    data: { "language" : langArr , "clientId": clientId, "projectName": projectName, "projectType": projectType},
    success: function(data){
        console.log("in success function");
        alert("Error:: " + data);
    },
    error: function(data){
         console.log("in error function");
         alert("Error :: "+ data);
    }
});