[英]Post custom array in Javascript via Ajax to Spring Rest Service
我必須在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; 並且eguals必須是javascript中array actor中對象參數的名稱:
你有什么錯誤嗎? 我認為問題可能是您沒有將數據序列化為JSON格式,請嘗試:
data:{ actors: JSON.stringify(actor) }
還添加:
contentType: "application/json; charset=utf-8",
應該可以。
編輯
嘗試
data: JSON.stringify(actor),
如何改變
@RequestMapping(value = "movies/actors", method = RequestMethod.POST)
至
@RequestMapping(value = "movies/actors", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)
為此,必須添加jackson依賴項,如果這是一個Maven項目,請嘗試添加以下內容作為依賴項。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>2.6.1</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.