Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC AJAX Sys is undefined error

I am getting a "Microsoft JScript runtime error: 'Sys' is undefined" error on one of my pages in an MVC application when I attempt an AJAX call. The AJAX call is made from a partial view which is embedded in more than one page. It works fine on all of the pages except one. I have read posts pointing to the web.config file settings and .axd mappings as possible solutions, but the application is configured correctly in the web.config, and the .axd mappings are also correct in IIS. Plus it works fine on all of the pages that use this partial view except one. It is acting like the AJAX libraries are not loading for this one page.

The references to the script files are in the shared site.master file. All of the pages, including the one that doesn't work, reference the same masterpage.

Any ideas? I have been working on this one for two days now. Thanks.

EDIT: As Sam pointed out below, it would seem like the AJAX call is firing before the AJAX libraries have a chance to load. But, the AJAX call is triggered by a submit button long after the page has rendered, so the AJAX libraries have had plenty of time to load - sorry for not giving enough information the first time.

like image 626
cnaegle Avatar asked Jun 23 '09 22:06

cnaegle


4 Answers

In web.config add the following line of code under appsettings tag:

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
like image 95
preeti Avatar answered Jan 22 '23 07:01

preeti


Just in case... use the following to avoid path issues

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" 
    type="text/javascript"></script>  
<script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" 
    type="text/javascript"></script>

Source: http://msdn.microsoft.com/en-us/library/dd381533.aspx

Thanks, Arty

like image 41
Woworks Avatar answered Jan 22 '23 08:01

Woworks


Load the page in Firefox, then use Firebug to inspect the page - you will be able to see all the individual scripts that have been loaded, plus all the network requests that were issued, and whether they succeeded or not. This is better than trying to troubleshoot from the server perspective.

If you are using IE8, you can use the Developer Tools window, but I think Firebug is better - both tools support JavaScript debugging though.

The most likely problem is that you are running script in your partial view before the scripts it is dependent on have had a chance to load - make sure that any script calls you have inside your partial view will only run once the page has loaded, and not immediately during loading.

like image 43
Sam Avatar answered Jan 22 '23 07:01

Sam


All the above cases are ok.But sometimes developer forget to add javascript files for ajax .So please check that also.

like image 31
sunila Avatar answered Jan 22 '23 08:01

sunila