簡體   English   中英

通過Ajax將Javascript中的自定義數組發布到Spring Rest Service

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM