如何从jsp页面发送json String到Spring mvc控制器

时间:2015-10-16 08:35:11

标签: javascript jquery json spring jsp

我正在尝试将一个简单的json字符串传递给我的控制器,但它没有到达那里。我有很多其他字段,比如在我的控制器代码中插入删除等,所有这些都可以正常工作,除了这个Json接收。我尝试了很多,但无法找到。我检查了给定的路径和它的正确。我的控制器代码有什么问题吗?任何帮助都会非常明显

我的jsp代码

var obj=new Object();
    obj.sm=startMonth;
    obj.sd=startDay;
    obj.em=endMonth;
    obj.ed=endDay;

 var jsonDate= JSON.stringify(obj);

    $.ajax({
        type: 'POST',      
        dataType: 'json',
        url:"/proj/test/dateVerification",
        data:jsonDate,

        success: function(jsonDate) {//upto this line from my browser debugger it works
            if (response == jsonDate)
            {
            alert("success and json passed");
            } else {
            alert("not success"+response);
            }
        },
        error:function(xhr, errorType, exception) { 

            alert("inside error function 1(xhr)"+JSON.stringify(xhr));
            alert("inside error function 2(errorType)"+errorType);
            alert("inside error function 3(exception)"+exception);
        }
    });

这是我的spring mvc控制器代码。

@RequestMapping(value = "dateVerification" , method = RequestMethod.POST)
    public @ResponseBody String dateVerification(@RequestParam(value="jsonDate",required=true) String jsonDate) {

        JOptionPane.showMessageDialog(null, jsonDate);
        System.out.println("JSON Success"+jsonDate);     
       return jsonDate;
    }

我无法在我的控制器中打印此Joption和sysout。我的控制器代码有什么问题吗?

任何帮助都会非常明显。

1 个答案:

答案 0 :(得分:0)

这真是一个javascript问题。在success回调函数中,您正在接收名为jsonDate的参数,但该参数是在ajax代码上方定义的变量。 response在函数范围内未定义,并且可能是您在调试器中看到的错误。只需更改回调函数的签名即可。

success: function(response) { // now response is defined in the scope of the function
    if (response == jsonDate)
    {
        alert("success and json passed");
    } else {
        alert("not success"+response);
    }
},