2017-07-03 6 views
0

Ich möchte eine Controller-Aktion aufrufen, wenn ein Wert aus einem Textfeld aktualisiert wird.Javascript Redirect verkettet URL statt Umleiten

Beachten Sie, dass das Skript innerhalb der gleichen Ansicht sitzt, die von der Botschaft/Index Controller-Aktion

Ich habe versucht, es zu tun, wie diese zurückgegeben werden:

<script> 
    $('#deliveryDate').change(function() { 
     var date = $('#deliveryDate').val(); 
     var sDate = date.split('/'); 
     location.href = 'dispatch/' + sDate[0] + sDate[1] + sDate[2]; 
    }); 
</script> 

Und es funktioniert perfekt die erste Mal, wenn sich der Wert ändert (dh die Seite wird zu /dispatch/12122016 umgeleitet).

Wenn ich jedoch den Wert erneut ändere, wird es an /dispatch/dispatch/13122016 umgeleitet, so dass der Wert nur concatanating bleibt und das erzeugt natürlich einen Fehler.


Ich habe versucht, die Umleitung Linie zu location.href = '@Url.Action("Index", "Dispatch")/' + sDate[0] + sDate[1] + sDate[2]; chaging, aber jetzt ist es verkettet nur das neue Datum an die URL statt Umleitung wie ich muss es ... (dh es /dispatch/12122016/13122016 navigiert)

Gibt es eine Möglichkeit, dies ohne den literalen URL-Pfad zu tun?

Wie kann „klar“ die aktuelle URL, bevor die Aktion Umleiten ich brauche (was nur dispatch/12122016 sein sollte?

+0

Ist die 'Dispatch'-Route relativ zu einem Pfad oder ist sie immer absolut zum Host? – ryeballar

+0

@ryeballar Es ist nur vom Gastgeber. Zum Beispiel beim Debuggen der vollen URL ist 'localhost: 60775/dispatch/13122016' – Bassie

Antwort

2

einfach einen Schrägstrich in der URL vorangestellt wird, soll dies immer diktieren, dass die URL-Änderung immer absolut seine gebunden

Als Bonus. ich habe Ihr Datum Verkettung auch nachgeändert 210 in einen Join.

$('#deliveryDate').change(function() { 
    var date = $('#deliveryDate').val(); 
    location.href = '/dispatch/' + date.split('/').join(''); 
}); 
+0

Vielen Dank, sehr geschätzt! – Bassie

0

die Sie interessieren durch den Schrägstrich angehängt wird. Da Ihr den Versand Verketten auf jeder

<script> 
    $('#deliveryDate').change(function() { 
     var date = $('#deliveryDate').val(); 
     var sDate = date.split('/'); 
     Var URL = '/dispatch/' + sDate[0] + sDate[1] + sDate[2]; 
     Window.location.href = URL 
    }); 
</script> 
umleiten
+0

Wie unterscheidet sich das zu meinem ersten Versuch? (abgesehen von den Syntaxfehlern) – Bassie

+0

Oops sorry typo. Ich habe die Antwort bearbeitet – karthik006