Frage

Ich arbeite in VS2010, ASP.NET MVC 2 -Projekt. Das Projekt wurde abgeschlossen, es bleibt noch auf dem IIS bekannt, aber die Probleme treten auf. AJAX -Anfrage, dass die Aufrufe der Controller -Methode nicht auf IIS funktioniert, sondern in V. Ich weiß nicht, ob etwas besonders für die Unterstützung von AJAX aufgenommen werden sollte? Ich brauche Hilfe und wie ich die Anfrage weiterleiten und die URL wird als MVC -Anfrage mit Parametern interpretiert? Ich benutze IIS 5.

War es hilfreich?

Lösung

Sie haben die URLs in Ihrem JavaScript fest codiert, nicht Sie:

$.post('/home/index', function(result) {

});

Anstatt URL -Helfer zu verwenden:

$.post('<%= Url.Action("index", "home") %>', function(result) {

});

Der Grund, warum Ihr Code nicht funktioniert, wenn Sie Ihre Anwendung in IIS bereitgestellt haben, ist, dass Sie jetzt ein virtuelles Verzeichnis haben, wie dies: http://example.com/myapplication/home/index. Wenn Sie die URL festhalten, anstatt URL -Helfer zu verwenden, um sie zu generieren, haben Sie eine AJAX -Anfrage http://example.com/home/index Was natürlich nicht funktioniert, da Sie den Anwendungsnamen fehlen.

Wenn Sie lokal arbeiten, gibt es kein virtuelles Verzeichnis, wenn Sie den integrierten Webserver von Visual Studio verwenden und die URL so aussieht: http://locahost:1234/home/index.

Persönlich würde ich Ihnen empfehlen, einfach HTML -Helfer zu verwenden, um DOM -Elemente wie z. <form> und <a> und dann unauffällig sie.

Zum Beispiel könnten Sie das folgende Formular haben:

<% using (Html.BeginForm("SomeAction", "SomeController")) { %>
    ... some input fields
<% } %>

was Sie wie das ausmachen könnten:

$(function() {
    $('form').submit(function() {
        $.post(this.action, $(this).serialize(), function(result) {
            // TODO: process the results
        });
        return false;
    });
});

Sehen Sie, wie wir in unseren JavaScript -Dateien keine URLs mehr feststellen? Jetzt funktioniert alles, egal wo Sie Ihre Bewerbung hosten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top