2009-07-13 4 views
1

Der folgende JQuery $ .ajax() -Aufruf in einer .js-Datei funktioniert lokal, aber nicht, wenn ich auf meinem ISP bereitstellen.

$.ajax({ 
    type: 'GET', 
    url: 'Services/GetActivePatient', 
    async: false, 
    dataType: 'json', 
    cache: false, 
    success: function(pt) { 
    Alert(pt); 
    }, 
    error: function(xhr, ajaxOptions, thrownError) { 
    alert('Error loading active patient' + 'XHR:' + xhr + ' OPTIONS:' + ajaxOptions + ' ERROR:' + thrownError); 
    } 
}); 

Meine Strecken sind:

routes.MapRoute(
     "aspx", 
     "{controller}.aspx/{action}/{id}", 
     new { action = "Index", id = "" } 
    ); 

    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = "" } 
    ); 

    routes.MapRoute(
    "Root", 
    "", 
    new { controller = "Home", action = "Index", id = "" } 
); 

Der Unterschied w/ISP ist die Anwendung/Standort befindet sich in einem Unterordner (/ IPD) befindet, die als Anwendung in IIS 6 aktiviert ist.

In diesem Aufruf bekomme ich einen Fehler 404 Seite nicht gefunden, wenn ich die Antwort in Firebug anzeigen.

Alle Gedanken geschätzt.

+0

Just the $ Schnipsel() Aufruf zu klären, wird mit JQuery in einer JS-Datei. – ChrisP

+0

Die Antwort von eu-ge-ne führte zu einigen Nachforschungen und das Problem ist, dass "/ ipd" allen Anrufen auf dem Server vorangestellt wird, da sich die Site im Unterordner/ipd befindet. Obwohl der Ordner/ipd als eine Anwendung markiert ist, wird anscheinend der Aufruf von $ .ajax() zum Stamm der Site geleitet. Das Ändern der URL zu "/ipd/services.aspx/GetActivePatient" funktioniert. Anstatt diese Problemumgehung für alle Aufrufe zu implementieren, kann ich stattdessen versuchen, die Site in das Stammverzeichnis (/) zu verschieben ... – ChrisP

Antwort

1

Versuchen zu ändern:

url: 'Services/GetActivePatient', 

zu

url: '<%= Url.Action("GetActivePatient", "Services") %>', 

// returns /ipd/Services/GetActivePatient on the ISP 
// and /Services/GetActivePatient on local server 

AKTUALISIERT:

Wenn Sie verfügen über separate js dann so etwas wie dies in Ihrer View verwenden Datei:

<script type="text/javascript"> 
    var Services_GetActivePatient_Url = '<%= Url.Action("GetActivePatient", "Services") %>'; 
</script> 

und dann in js:

url: Services_GetActivePatient_Url, 

Schauen Sie auch bei Stephen Walther - ASP.NET MVC Tip #45 – Use Client View Data

+0

Diese URL-Definition ist Teil eines JQuery $ .ajax() -Aufrufs in einer .js-Datei. t glaube, dass Server-Side-Skripte <% ... %> verarbeitet werden. – ChrisP

Verwandte Themen