jQuery Ajax 请求 Struts2 操作 class 始终 returns 200 正常,但错误事件被触发

jQuery Ajax request to Struts2 action class always returns 200 ok, but error event is fired

我是 Struts2 的新手,我要将一组表单数据发送到 struts 操作 class。

这是我在 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 请求 returns 200 OK,但总是警告 "Error"。我参考了很多文章,但仍然没有得到适当的解决方案

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

改变

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

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

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

是的,您可能会收到响应 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);
    }
});