【问题标题】:How to return a boolean value from a Java class to ajax?java - 如何将Java类中的布尔值返回给ajax?
【发布时间】:2015-01-04 00:15:21
【问题描述】:

我想将我的 Java 类中的 boolean 值返回给 Ajax 请求。该值已成功从 ajax 传递到 java 方法,但无法将 boolean 值返回给 Ajax。我收到一个错误:unknown return value type

@RequestMapping(value="/availability", method=RequestMethod.POST)
public boolean emailAvailability(String email) {
    boolean a = true;
    Query q = new Query("UserDetailsNew");
    PreparedQuery pq = ds.prepare(q);

    System.out.println("email in availability : " + email);

    for (Entity e : pq.asIterable()) {
        String Email = (String) e.getProperty("Email");
        if (Email.equals(email)) {
            a = false;
            return a;
        }
    }
    return a;
}

我的 Ajax 代码:

var email = $("#email").val();
    $.ajax({
          method:"post",
          url:"/availability",
          dataType: 'JSON',
          data:{ email: JSON.stringify(email) },
          success : function (data){
          console.log(data);
          if(!data){
              $("#email").focusout(function(){
                    $('#submit').prop('disabled',true);
                    $('.status').html("Email already taken...");
                });
          }
          else {
              $('.status').html("Email Available...");
              $('#submit').prop('disabled',false);
          }
         } 
    });

【问题讨论】:

  • 你能发布堆栈跟踪吗?它看起来像您的 Java 代码中的错误,可能与 Spring-MVC 有关。

标签: java ajax json spring


【解决方案1】:

您好,您可以使用 JsonResponse 类来执行此操作。这里 @ResponseBody 注释负责处理结果类型。有关更多信息,请参阅文档。

@RequestMapping(value="/availability", method=RequestMethod.POST)
public @ResponseBody JsonResponse emailAvailability(String email) {
    JsonResponse res = new JsonResponse();
    boolean a = true;
    Query q = new Query("UserDetailsNew");
    PreparedQuery pq = ds.prepare(q);

    System.out.println("email in availability : " + email);

    for (Entity e : pq.asIterable()) {
        String Email = (String) e.getProperty("Email");
        if (Email.equals(email)) {
            a = false;
            return a;
        }
    }
     res.setStatus("success");
     res.setResult(a);
     return res;

}

在 ajax 中,您可以使用

验证这一点
success: function(response){
            // we have the response
       if(response.status == "SUCCESS"){
//your code
}

请尝试一次。希望对您有所帮助。

【讨论】:

  • 感谢您的回答。但是我的控制台中仍然出现 406(不可接受)错误... dataType="JSON" 有问题吗?在此先感谢...
  • @ShiyaamSundar 尝试将这两个参数添加到您的 ajax 一次 datatype : "json", contentType: "application/json"
  • 仍然是同样的错误... ajax 传递了正确的值,我正在打印循环中的值以检查有效性,一切都运行良好,但是在返回值时产生了问题.. .
【解决方案2】:

这应该返回 JSON 数据。以下是我的演示:

public void validateCode_add(HttpServletRequest request,HttpServletResponse response,ModelMap model){
    boolean flag = true;
    String code=request.getParameter("code");
    if (StringUtils.isNotEmpty(code)) {
        XgInstructorCheckProject entity = this.manager.findByCode(code);
        if (entity != null) {
            flag = false;
        }
    }
    ResponseUtils.renderJson(response, flag + "");
}

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2015-02-14
    • 2013-11-29
    • 2021-04-04
    • 2022-01-10
    • 1970-01-01
    • 2011-11-28
    • 2016-01-25
    相关资源
    最近更新 更多