Je souhaite échanger des données JSON (objets) avec Ajax entre Java et JavaScript! ~ Édition de printemps ~

Passer les données JSON de JS au contrôleur Java

J'ai remis le JSON lorsque j'ai créé une simple application TODO, donc un mémorandum J'utilise la communication Ajax avec jQuery

todo.js


/**Ajouter un nouveau à la base de données. */
  function postItem(newContent) {

    let todo = {
      content: newContent
    };

    $.ajax({
      type: "post",
      url: contextPath + "/post",  //OK si c'est l'URL pour appeler le contrôleur
      data: { jsonTodo: JSON.stringify(todo) }, //JSON(Tableau associatif)À une chaîne
      dataType: "json"
    }).then(function (result) {
      console.log('Vous pouvez écrire le traitement au moment du succès. Comme ci-dessous.');
      let content = result.content;
    }, function () {
      console.log('Vous pouvez écrire le traitement au moment de l'échec');
    });

Kimo est JSON.stringify (convertit le JSON cible en chaîne)

TodoController.java


	/**
	 *Ajouter un nouveau TODO.
	 * @param todo Nouveau message TODO
	 * @retourner TODO avec la mise à jour reflétée
	 */
	@ResponseBody //Étant donné que l'encodeur JSON est construit dans l'annotation, l'objet peut être renvoyé directement à JS.
	@PostMapping("/post")
	public Todo post(@RequestBody Todo todo) throws JsonParseException, JsonMappingException, IOException  {
        todoRepository.saveAndFlush(todo); //mise à jour de la base de données
		return todo;
	}

Passer des objets du contrôleur Java à JS

TodoController.java


    @ResponseBody //Convertit automatiquement l'objet retourné en une chaîne de caractères pouvant être interprétée par JSON
	@GetMapping("/find_all_asc")
	public List<Todo> findAllOrderASC(){
		List<Todo> todos = todoRepository.findAll(new Sort(Direction.ASC, "id"));
		return todos;
	}

todo.js


  /**Initialisation de la liste TODO*/
  $.getJSON(contextPath + "/find_all_asc", null,
    function (data, textStatus, jqXHR) { //JSON est coincé dans les données
    //Vous pouvez décrire le processus que vous souhaitez faire avec le JSON acquis
      data.forEach(todo => {
        console.log(todo.content);  
      });
    }
  );

Ajax Setup (inclut la description de jQuery)

JavaScript


$(function () {
    /**
     * layout.Chemin de contexte obtenu à partir de html.
     *Exemple)/elabel/Si vous souhaitez accéder à la modification, cliquez sur "contextPath"+ 'elabel/edit'Peut être utilisé comme URL.
     */
    contextPath = $('#contextPath').val();
});

/**Si vous souhaitez modifier le paramètre, écrivez-le dans la méthode Ajax individuelle.. */
(function () {
    $.ajaxSetup({
        cache: false,
        /**Ne pas mettre en cache la réponse de la communication Ajax une fois utilisée. */
        timeout: 15000,
        /**Réglage du délai (provisoire)*/
        beforeSend: function (xhr, settings) {
            /**Traitement juste avant le début de la communication*/
            setCsrfTokenToAjaxHeader();
            // showKurukuru();
        },
        success: function (data, status, xhr) {
            /**Traitement lorsque la communication est réussie*/
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            /**Traitement en cas d'échec de la communication*/
            console.log("la communication ajax a échoué");
            console.log("XMLHttpRequest : " + XMLHttpRequest.status);
            console.log("textStatus     : " + textStatus);
            console.log("errorThrown    : " + errorThrown.message);
        },
        complete: function (xhr, status) {
            /**Traitement lorsque la communication est terminée (qu'il s'agisse d'une erreur ou non)*/
            //hideKurukuru();
        },
    });
})();

/**
 *Une fonction qui peut intégrer un jeton basé sur les mesures CSRF de Spring Security dans l'en-tête de la communication ajax..
 *Veuillez l'utiliser en l'appelant juste avant la communication Ajax à utiliser..
 */

function setCsrfTokenToAjaxHeader() {
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
    $(document).ajaxSend(function (e, xhr, options) {
        xhr.setRequestHeader(header, token);
    });
}

Thymeleaf


<meta name="_csrf" th:content="${_csrf.token}" />
<meta name="_csrf_header" th:content="${_csrf.headerName}" />
<input id="contextPath" type="hidden" th:value="${#request.getContextPath()}" />

Article de référence

Nifty JSON.stringify (http://www.symmetric.co.jp/blog/archives/1568) Article de référence sur POST d'Ajax vers Java POST d'ajax vers java (http://brissyu.blogspot.jp/2015/09/11spring-boot-web-ajax-csrf.html) Recevez json par POST au spring3 (http://ponkotsusechan.hatenadiary.jp/entry/2016/02/01/173000_1)

Recommended Posts

Je souhaite échanger des données JSON (objets) avec Ajax entre Java et JavaScript! ~ Édition de printemps ~
Je veux afficher des images avec REST Controller de Java et Spring!
Je veux faire des transitions d'écran avec kotlin et java!
Même si je souhaite convertir le contenu d'un objet de données en JSON en Java, il existe une référence circulaire ...
Comment utiliser les données JSON dans la communication WebSocket (Java, JavaScript)
Différence entre Java et JavaScript (comment trouver la moyenne)
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
[jackson] Je souhaite recevoir les valeurs JSON "0" et "1" sous forme de booléen
Créez une API pour envoyer et recevoir des données Json avec Spring
Je veux implémenter diverses fonctions avec kotlin et java!
Je veux revenir à l'écran précédent avec kotlin et java!
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
Je veux arrêter complètement les mises à jour Java
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
Différence entre Java, C # et JavaScript (comment trouver le degré d'obésité)
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
Exécuter R à partir de Java Je veux exécuter rJava
Je souhaite envoyer un e-mail en Java.
Je veux utiliser java8 forEach avec index
J'ai essayé de lier JavaFX et Spring Framework.
Je veux écrire rapidement de java vers sqlite
[Java] Différence entre "variable finale" et "objet immuable"
Afficher et publier les données de structure à plusieurs niveaux par ascendance !! ~ Ajax ~
Je souhaite supprimer un fichier géré par Git
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
Je souhaite établir une connexion lorsqu'une base de données est créée à l'aide de Spring et MyBatis
Je souhaite renvoyer un objet au format CSV avec en-tête et filtre multilignes en Java
# 1_JAVA Je veux obtenir le numéro d'index en spécifiant un caractère dans la chaîne de caractères