javascript - 通过 Ajax 将 Javascript 中的自定义数组发布到 Spring Rest 服务

标签 javascript java ajax spring post

我必须在 JQuery 中使用 AJAX 请求创建一个 POST,其中我必须传递一个可以用来创建的对象数组:

var actor=new Array();
for(var i=1;i<=incr;i++)
{
    actor.push({"name": document.getElementById("idAN"+i).value,
        "surname": document.getElementById("idAS"+i).value,
        "dateborn": document.getElementById("idAB"+i).value,
        "gender": document.getElementById("idAG"+i).value,
        "movie": datas});
    alert("actorX: "+actor[i-1].surname);
}
$.ajax({
    method:'POST',
    dataType: 'json',
    data:{ actors: actor },
    url:'http://localhost:8080/movies/actors',
        success: function (rest) {
                alert("aggiunto attore");
    },
    error: function(rest){
        alert("non aggiunto attore");
    }
});

我用这个Java方法接收数据,但这不起作用。有人可以帮助我吗?

@RequestMapping(value = "movies/actors", method = RequestMethod.POST)

public ArrayList<Actor> addActors(@RequestBody Actor[] actors) {...}

经过三天的工作,我在评论的帮助下解决了这个问题。这是java中该方法的结果:

@CrossOrigin(origins = "http://localhost:8080")
@RequestMapping(value = "movies/actors", method = RequestMethod.POST,headers="Accept=application/json")

public @ResponseBody ArrayList<Actor> add (@RequestBody Actor[] actors) {
    //Actor[] actors = actobj.getAllActors();
    ArrayList<Actor> json = new ArrayList<Actor>();
    for(Actor A : actors){
        System.out.println("Arrivo");
        serv.addActor(new Actor(A.getName(),A.getSurname(),A.getBorn(),A.getGender(),A.getMovie()));
        System.out.println("nomeAttore"+A.getName());
         json.add(A);
    }
    return json;
}

这是发布请求:

$.ajax({
    method:'POST',
    dataType: 'json',
    data:JSON.stringify(actor),
    contentType: "application/json; charset=utf-8",
    url:'http://localhost:8080/movies/actors',
    success: function (rest) {
         alert("aggiunto attore");
    },
    error: function(rest){
        alert("non aggiunto attore");
    }
});

特别是,我将查询sql中的一个参数值从databorn更改为born,因为我有方法getBorn和setBorn,所以名称必须相同;并且eguals必须是javascript中的数组actor中对象的参数名称:born

最佳答案

你有没有发现任何错误?我认为问题可能是您没有将数据序列化为 JSON 格式,请尝试:

data:{ actors: JSON.stringify(actor) }

另添加:

contentType: "application/json; charset=utf-8",

应该没问题。

编辑

尝试

data: JSON.stringify(actor),

关于javascript - 通过 Ajax 将 Javascript 中的自定义数组发布到 Spring Rest 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787474/

相关文章:

java - BigInteger 如何存储

java - 将单词转换为 2 个字母的数组

javascript - 我怎样才能用 thymeleaf 和 spring 4 mvc 从表中发布帖子?

javascript - 在 jquery ajax 中传递参数导致未定义

javascript - 在Javascript中将PDF拆分为单独的文件

javascript - 如何使用 Deferred 顺序运行代码?

javascript - 有没有办法既解构函数参数,又保留对参数的命名引用?

java - 在 Android 中使用 ItemizedOverlay 添加可见的 "Markers"以表示地理点到 MapView

javascript - ajax 未将 html 更新为 javascript 动态创建的 div

php - WordPress WP REST API 按域限制请求