当您期望空结果时,如何防止从 java 服务器端返回 400 代码?

How to prevent a 400 code being returned from java server side when you expect an empty result?

我有一个 ajax 对服务器端 java servlet 的调用,空响应非常有效。但是,我也收到 400 错误代码。问题在于 400 错误填满了我的 report-uri 日志,因此很难找到任何 'real' 错误。有什么办法可以防止400码吗

ajax 调用是:

      $.ajax({
            url : 'NewsDispView',
            data : {
                ssAccountLevel : sessionStorage.getItem('ssAccountLevel'),
                ssAccountID : sessionStorage.getItem('ssAccountID'),
                ssGroupID: sessionStorage.getItem('ssGroupID'),
                ssGroupSection: sessionStorage.getItem('ssGroupSection'),
            },
            type : 'POST',
            cache: false,
        })
        .fail (function(jqXHR, textStatus, errorThrown) {
    //      alert(jqXHR.responseText);
            if(jqXHR.responseText.includes('No News')){
                alert("No news");
            }else{
                alert("News");
            }
            var marquee = "<span class='glyphicon glyphicon-forward'>";
            marquee += " No notices ";
            marquee += "<span class='glyphicon glyphicon-forward'>";
            $("#newsMarquee").empty();
            $('#newsMarquee').append(marquee);
        })
        .done(function(responseJson1a){
            // JSON response to populate the activities table
            dataType: "json";
    
            //alert(JSON.stringify(responseJson1a));
            
            //do stuff
        })

servlet return 是:

    if (newsList == null || newsList.isEmpty()) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No News.");
    } else {
        String json = new Gson().toJson(newsList);
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(json);
    }

您也可以将错误消息以 JSON 格式 传递给您的 ajax 调用。因此,生成您的 json 然后像下面那样传递它:

if (newsList == null || newsList.isEmpty()) {
   String json = new Gson().toJson(yourjson);
 } else {
   String json = new Gson().toJson(newsList);
 }
 response.setContentType("application/json");
 response.setCharacterEncoding("UTF-8");
 response.getWriter().write(json);

然后,检查您的 ajax 代码是否响应有密钥,即:error 并相应地更改您的 ajax 逻辑。