2009-08-20 31 views
5

Ho URL errato nelle mie chiamate Ajax.ASP.NET MVC URL errato in chiamate Ajax

$.ajax({ 
    type: "POST", 
    url: "Home/GetDetails", 
    ...... 
}); 

HomeController ha GetDetails azione().

Tutto funziona bene, quando carico pagina con HTP URL: // localhost/projectName Ajax URL è htp: // localhost/projectName/Home/GetDetails

Ma dopo aver caricato HTP: // localhost/projectName/Home/Index tutte le mie chiamate ajax stanno andando a htp: // localhost/projectName/Home/Home/GetDetails e questo è sbagliato.

Per favore, come posso risolvere questo?

risposta

9

È consigliabile utilizzare il Helper URL per generare gli URL ...

$.ajax({ 
    type: "POST", 
    url: "<%= Url.Action("GetDetails") %>", 
    ...... 
}); 
+1

lo più a destra , ma qui dovrebbe essere Url.Action, non Url.Content. –

+0

Whoops, risolto - grazie a @Craig. – Kieron

+0

funziona bene :) grazie –

4

Se si bastone con le corde e non Url.Action, mettere una barra prima 'casa'

url: "/Home/GetDetails" 
+1

Si presume che l'applicazione sia sempre ospitata nella root del sito web. Se sono ospitate più applicazioni, è molto probabile che ogni applicazione abbia la propria directory virtuale. Puoi codificare l'intero URL, inclusa la directory virtuale, oppure utilizzare gli helper URL in MVC per generare gli URL in modo dinamico (che dovrebbe sempre funzionare). – Eilon

+2

Cosa fai quando hai un file js separato con tutto il javascript? – leen3o

+0

Tendo a hardcode (** gasp! **) gli URL. Se ho tempo, potrei avere un file JS generato sul server con gli URL in quello assegnato alle variabili JavaScript approprite, ma non ne sono pragmatico. – swilliams