Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVCAjaxPost_Java_Ajax_Spring_Rest_Spring Mvc - Fatal编程技术网

Java SpringMVCAjaxPost

Java SpringMVCAjaxPost,java,ajax,spring,rest,spring-mvc,Java,Ajax,Spring,Rest,Spring Mvc,我试图用Ajax将JSON对象发布到Rest Spring MVC控制器,但遇到了一些问题 让我们向您展示我的代码: 控制器 @RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE) public @ResponseBody JsonResponse checkUsername(@RequestBo

我试图用Ajax将JSON对象发布到Rest Spring MVC控制器,但遇到了一些问题

让我们向您展示我的代码:

控制器

@RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST,  produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody JsonResponse checkUsername(@RequestBody JsonUsername username) {
    String usernameString = username.getUsername();
    JsonResponse response = new JsonResponse();
    response.setMessage(usernameString + "Available");
    return response;
}
Ajax函数

   function displayUsernamError(data) {
    var json = "<h4>Eroare</h4><pre>"
            + JSON.stringify(data, null, 4) + "</pre>";
    $('#usernameError').html(json);
}

function checkUsername(){
    var username = document.getElementById("username");
    var search = {
            "username" : username.value
    }

    $.ajax({
            type : "POST",
            contentType : 'application/json; charset=utf-8',
            dataType : 'json',
            url : "http://localhost:8080/skill-assessment/register/checkUsername.html",
            data : JSON.stringify(search),
            success : function(result) {
                console.log("SUCCESS: ", data);
                displayUsernamError(result);
            },
            error: function(e){
                console.log("ERROR: ", e);
                displayUsernamError(e);
            },
            done : function(e) {
                console.log("DONE");
            }
    });
}
函数显示用户名错误(数据){
var json=“Eroare”
+stringify(数据,null,4)+”;
$('#usernamererror').html(json);
}
函数checkUsername(){
var username=document.getElementById(“用户名”);
变量搜索={
“用户名”:username.value
}
$.ajax({
类型:“POST”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
url:“http://localhost:8080/skill-评估/注册/检查用户名.html“,
数据:JSON.stringify(搜索),
成功:功能(结果){
console.log(“成功:”,数据);
显示用户名错误(结果);
},
错误:函数(e){
日志(“错误:”,e);
显示用户名错误(e);
},
完成:功能(e){
控制台日志(“完成”);
}
});
}
最后是html表单:

$.ajax({
  headers: { 
    Accept : "application/json",
    Content-Type: "application/json"
  },
  data: "data",
  ...
})

用户名

登记
所以,当我点击Register按钮时,我正在调用checkUsername方法,仅用于测试

调用ajax函数,并将JSON发送到控制器。我使用了调试,控制器似乎得到了JSON对象

问题在于控制器响应,因为在我的html页面的error div中,我得到以下错误:

HTTP状态406 此请求标识的资源只能根据请求“接受”标头生成具有不可接受特征的响应


问题在哪里?谁能给我一个主意?

使用
@ResponseBody
需要对象到json, 似乎缺少一些jar文件 (jackson-mapper-asl.jar和jackson core asl.jar)
尝试导入它

首先检查控制器是否返回JSON。您可以使用任何REST客户端,并查看返回头是什么。如果没有,那么添加jacksonmapperbean

另外,尝试在ajax调用中设置Accept头

@RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST,  consumes=MediaType.APPLICATION_JSON_VALUE)

您需要在请求映射注释内指定以下代码

var variable="test";
$.ajax({
    url: baseUrl + "nameController/test1",
    async: false,
    data: {val: variable},
    dataType: 'html',
    success: function (dat) {
        console.log(dat);
    }
});
您无需指定products属性,因为@Responsebody将根据请求对象内容类型生成内容[可选]。如果你想要其他的,那么你只需要提到它

);charset=utf-8是Ajax调用中的默认值。你不必单独提及。尝试做这些更改。

in.js(java脚本) ajax函数

@RequestMapping(value = "test1", method = RequestMethod.POST)
public @ResponseBody
String checkRoomStatusReservation(@RequestParam(value = "val", required = true) String parse) {
    System.out.println("parse"+parse);
    //value from parse=test
return parse;
}
您可以创建nameController.java 控制器


您可以尝试使用consumes=MediaType.APPLICATION\u JSON\u值
@RequestMapping(value = "test1", method = RequestMethod.POST)
public @ResponseBody
String checkRoomStatusReservation(@RequestParam(value = "val", required = true) String parse) {
    System.out.println("parse"+parse);
    //value from parse=test
return parse;
}