【问题标题】:json sending null value to controllerjson 向控制器发送空值
【发布时间】:2013-07-30 07:32:09
【问题描述】:

我正在使用 jquery.validate.js 验证表单,我需要识别重复条目,为此我使用自定义方法,即:

jQuery.validator.addMethod("uniqueName", function(name, element) {
        var response;
        $.ajax({
            type: "POST",
            dataType : "json",
            url:"${pageContext.request.contextPath}/company/getDuplicate",
            data:"name="+name,
            async:false,
            success:function(data){
                response = data;
            },
            error: function (data) {
                alert(request.responseText);
            }
        });
    }, "Name is Already Taken");

在规则部分:

rules : {
            name : {
                required : true,
                uniqueName : true
                }
        },
        errorElement : "span",
        messages : {
            name : {
                required : "Name Is Required"
            }
        }

这是我的 JSP 代码:

<label>Name:</lable>
<form:input path="name"></form:input>

它正在命中指定的 url,但 Json 向方法发送空值

这是我的控制器方法:

@RequestMapping(value = "/company/getDuplicate", method = RequestMethod.POST, headers = "Accept=*/*")
     public @ResponseBody void getTitleList(HttpServletRequest request, HttpServletResponse response) {

        JSONObject json = new JSONObject();
        String data = ((String)json.get("name"));
        List<Company> matched = companyService.getDuplicate(data);
        if(matched != null && !"".equals(matched)){
            json.put("name", "present");
            System.out.flush();
        }
        else{
            json.put("name", "notPresent");
            System.out.flush();
        }
    }

我想要的是: 1.如何将文本框的值发送到控制器(在我的例子中是Json发送null)。 2.在上述方法中,我不认为'if语句有写入条件',因为当数据库中不存在'name'时,'matched'变量显示如下=> []

请在这个问题上帮助我。提前致谢。

【问题讨论】:

  • 你可以尝试 stringify() 你的数据吗?而且您的代码有误:“”。我不认为这是问题,但你应该纠正

标签: jquery json spring spring-mvc jquery-validate


【解决方案1】:

修改你的代码如下:

$.ajax({
            type: "POST",
            dataType : "json",
            url:"${pageContext.request.contextPath}/company/getDuplicate",
            data:{"name":name},
            async:false,
            success:function(data){
                response = data;
            },
            error: function (data) {
                alert(request.responseText);
            }
        });

并将您的控制器处理程序修改为
注意方法签名中注释的前两行和附加的@RequestParam(value="name") String name

@RequestMapping(value = "/company/getDuplicate", method = RequestMethod.POST, headers = "Accept=*/*")
     public @ResponseBody void getTitleList(@RequestParam(value="name") String name,HttpServletRequest request, HttpServletResponse response) {

        //JSONObject json = new JSONObject();
        //String data = ((String)json.get("name"));
        List<Company> matched = companyService.getDuplicate(name);
        if(matched != null && !"".equals(matched)){
            json.put("name", "present");
            System.out.flush();
        }
        else{
            json.put("name", "notPresent");
            System.out.flush();
        }
    }

【讨论】:

  • 感谢我从 json 获取数据,但即使没有重复,它也会显示每个数据都存在...
猜你喜欢
  • 2015-05-16
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 2010-12-05
相关资源
最近更新 更多