2009-07-13 8 views
1

L'appel JQuery $ .ajax() suivant dans un fichier .js fonctionne localement, mais pas lorsque je déploie sur mon FAI.

$.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); 
    } 
}); 

Mes itinéraires sont:

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 = "" } 
); 

La différence w/fournisseur de services Internet est l'application/site est situé dans un sous-répertoire (/ IPD) qui est activée comme une application dans IIS6.

Dans cet appel, j'obtiens une erreur «404 Page Not Found» lorsque j'examine la réponse dans Firebug.

Toutes les pensées ont apprécié.

+0

Juste pour clarifier l'appel .ajax $() utilise JQuery dans un fichier .js. – ChrisP

+0

La réponse de eu-ge-ne ci-dessous a conduit à quelques recherches et le problème est que "/ ipd" est préfixé à tous les appels au serveur puisque le site est situé dans le dossier/ipd child. Apparemment, même si le dossier/ipd est marqué comme une application, l'appel $ .ajax() va à la racine du site. La modification de l'URL en "/ipd/services.aspx/GetActivePatient" fonctionne. Plutôt que d'implémenter cette solution de contournement pour tous les appels, je peux plutôt essayer de déplacer le site vers la racine (/) ... – ChrisP

Répondre

1

Essayez de changer:

url: 'Services/GetActivePatient', 

à

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

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

MISE À JOUR:

Si vous avez fichier utiliser alors ce quelque chose comme js séparés dans votre Vue:

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

puis dans js:

url: Services_GetActivePatient_Url, 

Regardez aussi Stephen Walther - ASP.NET MVC Tip #45 – Use Client View Data

+0

Cette définition d'URL fait partie d'un appel JQuery $ .ajax() dans un fichier .js. Je crois que les scripts côté serveur <% ... %> seront traités. – ChrisP

Questions connexes