0
votes

Ne pas charger la page

Lorsque je clique sur un bouton, je suis censé aller à eventpage (oui, j'ai un modèle pour eventpage dans le dossier My Templates). Pourquoi ne pas charger?

ci-dessous sont des extraits de mon code. P>

$('.events').on("click", function() {
    var eventName = $(this).val();
    $.ajax({
        type: 'POST',
        url : '/eventpage',
        data : {'eventName' : eventName},
        success : function(data) {

        }
    });
});


@RequestMapping(value = "/eventpage")
public String eventPage(@RequestParam("eventName") String eventName, Model model) {
    for(Event e : EventRegistrationSystemApplication.events) {
        if(e.getName().equals(eventName)) {
            model.addAttribute("event", e);
            break;
        }
    }

    return "eventpage";
}


6 commentaires

D'après ce que je soupçonne, passez-vous à l'en-tête et à "jeton" pour les appels Ajax? Pour confirmer, accédez à la console de votre console et cliquez sur "Eventpage" et voir "En-têtes", "Aperçu" et "Réponse". S'il vous plaît vérifier et confirmer. Merci.


Je pense que vous confondez le comportement d'une demande synchrone avec celle d'une demande asynchrone. Cela peut vous aider Stackoverflow.com/a/33969543/4796021


@Digvijay Désolé je suis nouveau dans cette technologie. Pourriez-vous me clarifier ce que je devrais voir aux en-têtes? L'aperçu est vide. La réponse est le code HTML pour eventpage.


@Kyleoliva Ouvrez le même état que votre capture d'écran (Aller à Network -> Cliquez sur 'Eventpage') Voir cet exemple -> IBB. CO / 4F7CX5W


@Digvijay ici c'est IBB.CO/ZSXDBPG


@Kyleoliva en-tête et jeton sont manquants. Je posterai une réponse (cela pourrait vous aider ... ou quelque chose d'autre est également manquant)


3 Réponses :


0
votes

La demande AJAX que vous utilisez est en train de poster une demande à cette URL et de ne pas charger la page Web. Si vous souhaitez charger la page Web, utilisez window.location.href = "/ eventpage? EventName =" + eventName dans votre JavaScript.


1 commentaires

Ce n'est pas tout à fait raison. fenêtre.location.href = "/ eventpage? EventName =" + EventName



0
votes

Je pense que vous avez peut-être confondu la demande asynchrone VS synchrone, vous pouvez regarder Ce message pour en savoir plus. Vous devez également utiliser une demande pour charger la page (pas un post). Une demande postale est généralement destinée à l'envoi de données de formulaire au backend, tandis que la demande d'obtention d'une demande d'accès (comme à partir d'une API) ou de chargement de pages (sauf si c'est une application Web).

Vous pouvez effectuer une modification de page lorsque Alex Davies a suggéré avec JavaScript (pas avec Ajax). Vous pouvez également modifier le @RequestMapping vers @ getMapping ("/ eventpage") pour utiliser une approche plus directe avec le printemps.


0 commentaires

0
votes

Basé sur la capture d'écran (IBB.CO/ZSXDBPG), l'en-tête et le jeton sont manquants de l'appel postal.

$('.events').on("click", function() {
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
    var eventName = $(this).val();
    $.ajax({
        type: 'POST',
        url : '/eventpage',
        data : {'eventName' : eventName},
        beforeSend: function(xhr) {
            xhr.setRequestHeader(header, token);
        },
        success : function(data) {
            console.log(data);
        }
    });
});


0 commentaires