ASP.NET MVC, AJAX Sys n'est pas défini d'erreur
Je suis une "erreur d'exécution Microsoft JScript: 'Sys' est indéfini" erreur sur une de mes pages dans une application MVC lorsque je tente un appel AJAX. L'appel AJAX est faite à partir d'une vue partielle qui est intégré dans plus d'une page. Il fonctionne très bien sur toutes les pages sauf un. J'ai lu les messages pointant vers le web.fichier de configuration des paramètres et .axd correspondances des solutions possibles, mais l'application est correctement configuré dans le web.config, et la .axd mappages sont également correctes dans IIS. De Plus il fonctionne très bien sur toutes les pages qui utilisent cette vue partielle, sauf un. Elle est agi comme l'AJAX bibliothèques ne sont pas de chargement de cette page.
Les références aux fichiers de script sont dans le site partagé.fichier maître. Toutes les pages, y compris celle qui n'a pas de travail, de référence, de la même masterpage.
Des idées? J'ai travaillé sur celui-ci pendant deux jours maintenant. Merci.
EDIT: Comme Sam l'a souligné ci-dessous, il semblerait que l'appel AJAX est tir avant l'AJAX bibliothèques ont une chance à la charge. Mais, l'appel AJAX est déclenchée par un bouton de soumission de temps après que la page a rendu, de sorte que l'AJAX bibliothèques ont eu beaucoup de temps pour charger - désolé de ne pas donner assez d'informations la première fois.
Vous devez vous connecter pour publier un commentaire.
Charger la page dans Firefox, puis utiliser Firebug pour inspecter la page vous pourrez voir tous les scripts qui ont été chargés, en plus de toutes les demandes de réseau qui ont été émis, et s'ils ont réussi ou pas. C'est mieux que d'essayer de résoudre les problèmes à partir du serveur de point de vue.
Si vous êtes en utilisant IE8, vous pouvez utiliser la fenêtre Outils de développement, mais je pense que Firebug est mieux à la fois des outils de support de débogage JavaScript si.
Le problème le plus probable est que vous exécutez le script dans votre vue partielle avant les scripts, c'est dépendante d'avoir eu une chance de charge - assurez-vous que tous les appels de script que vous avez à l'intérieur de votre vue partielle sera exécuté qu'une fois la page chargée, et pas immédiatement pendant le chargement.
Dans
web.config
ajouter la ligne suivante de code sousappsettings
tag:Juste au cas où... utiliser les éléments suivants pour éviter les problèmes de chemin d'accès
Source: http://msdn.microsoft.com/en-us/library/dd381533.aspx
Grâce,
Arty
Tous les cas ci-dessus sont ok.Mais parfois développeur oublier d'ajouter les fichiers javascript ajax .Veuillez vérifier que aussi.
Fondamentalement, vous pourriez être manquant:
MicrosoftMvcAjax.
,MicrosoftMvcValidation.debug
etMicrosoftMvcValidation
JS références de fichier.Faire les étapes ci-dessous:
PM> Install-Package MicrosoftAjax
PM> Install-Package MicrosoftMvcAjax.Mvc5
Les inclure dans
bundleconfig
comme ci-dessous:Maintenant, il devrait fonctionner sans erreurs.
Ajouter sur le web.cofig dans la section:
Concernant votre réponse à Sam, une chose que j'ai remarqué dans beaucoup d'apps MVC est que les gens ne savent pas comment faire face à l'ambiguïté de chemins relatifs et de l'application ou de l'exécution. Par exemple, l'URL rewriting assez bien garantit qu'une page en particulier peuvent apparaître à différentes profondeurs que prévu, de sorte
../../images
va quelque part d'autre en fonction de si vous êtes à la recherche à/products/widget
ou/products/widget/12345
, même si le point de vue pourrait être la même. Comme Arty souligné, la meilleure façon de gérer cela est de laisser le moteur faire le travail pour vous en utilisant une URL de l'utilitaire et de l'application des chemins qui seront fixées par la demande, quel que soit le contexte.J'ai également constaté que l'utilisation des œuvres suivantes avec ASP.NET MVC2.
Au lieu d'utiliser MicrosoftMvcAjax.js vous utilisez MicrosoftMvcValidation.js
Espère que cela aide quelqu'un.