Wie kann ich verhindern, dass Spring MVC zu tun, eine Umleitung?

Ich damit umgehen will eine AJAX-Anfrage, dass updates ein Element. Ich brauche es nicht, um etwas zurückzugeben. Das problem ist, dass Spring MVC besteht nach dem Absenden einen redirect auf die selbe URL (anscheinend macht seine post-redirect-get-Sache), die der browser brav folgt.

Wie kann ich ein Spring MVC-controller-Methode einfach ausfüllen und wieder zurückgeben, ohne dass eine Umleitung? Auf der Suche im web führt nur zu countrless Diskussionen darüber, wie man eine Weiterleitung, nicht, wie zu vermeiden, eine.

Ist es eine PUT-Anfrage an http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e mit diesen überschriften:

Host: localhost:9090
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Length: 20
Content-Type: application/json
Referer: http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e/visualizations/common-api?slas=lp,internal,external
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Authorization: Basic xxxx

Den response-status-code "302 Found", kein body content und Header:

Content-Language: "de"
Content-Length: "0"
Location: "http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e"
Server: "Jetty(6.1.10)"
access-control-allow-origin: "*"

Hier ist das Server-side-code:

@RequestMapping(value = "/api/testrun/{testrunId}", method = RequestMethod.PUT, consumes = "application/json")
@ResponseBody
public Testrun updateOverview(@PathVariable("testrunId") final String testrunId, @RequestBody final String body) {
    return testrunService.updateOverview(testrunId, body);
}

Hier ist der Javascript-code, der lässt den AJAX-Aufruf:

$(document).ready(function() {
    $("#update_name_form").submit(function (e) {
        update_testrun($("#name"));
        return false;
    });
}
function update_testrun(element) {
    var name = element.attr('name');
    var new_value = element.val().trim();
    var data = {};
    data[name] = new_value;
    $.ajax({url: config.urls.api.testrun + testrun.id,
            type: "PUT",
            contentType: "application/json",
            data: JSON.stringify(data),
            error: function(jqXHR, textStatus, errorThrown) {
                    alert(errorThrown);
            },
            success: function (data, textStatus, jqXHR) {
                    testrun.overview[name] = new_value;
            }
    });
}
  • @ResponseBody nicht senden Sie eine Umleitung von default; etwas anderes ist wohl hier passiert.
  • mit @ResponseBoby annotation Methode sollte nur eine serialisierte Testrun Objekt ohne Umleitung. Welchen code verwenden Sie, um make-AJAX-call?
  • Bitte fügen Sie weitere details, wie der Netzwerk-Konsole mit der redirect-Antwort. Der code, den Sie gepostet habe würde nicht, von sich aus, verursachen eine Umleitung.
  • sicher - aber was könnte dieses "etwas anderes" sein?
  • siehe update
  • Getan.
  • Einige Konfiguration wäre schön.
  • Sind Sie auf der Suche nach etwas besonderes für Ihre Freunde, oder jetzt nicht, dass es ein menschlicher Fehler?
  • eine umfangreiche und aussagekräftige (d.h. mit Zitat aus dem Spring-MVC-docs) Liste von dem, was könnte die Ursache eine Umleitung, sodass ein Prozess der Beseitigung, wäre ideal.

Schreibe einen Kommentar