- Writing and Maintaining Complex JavaScript – building AJAX-enabled applications requires substantial JavaScript skills, which may turn to be a problem for a large number of .Net developers. Furthermore, the lack of good debugging tools for client-side script makes the process even more complicated.
- ViewState Management – ASP.NET web controls properly maintain their ViewState between postbacks. The same, however, does not apply for AJAX callbacks. As a result, developers need to figure a way for the proper management of the page ViewState.
- Breaking the Page Paradigm – AJAX requires a different way of thinking about a web-site, since the concept of a "Page" is no longer valid. In fact, AJAX applications may be considered as closer to the desktop-applications development approach. The fact that a Page no longer holds constant data leads to two important consequences – the Back button and bookmarking will no longer work as expected. Therefore, developers need to implement specific mechanisms for overcoming these two issues.
- Accessibility – the AJAX development technique fundamentally violates the requirements for accessibility. Since the page content is being updated dynamically, the changes may not be detected by accessibility tools like screen readers. Furthermore, some accessibility standards prohibit the use of JavaScript altogether, which practically eliminates the possibility for using AJAX.
- New UI Interactivity Requires Learning – the UI richness of AJAX-enabled application presents users with new and unexpected functionality. Although this is the main reason for using AJAX in the first place, it may require some learning.
The advantages of AJAX-enabled applications to classic ones can be summarized as follows:
- Better Performance and Efficiency – the key advantage of AJAX applications is the significantly higher performance, which is a result of the small amount of data transferred from the server. This makes the AJAX technique especially beneficial for data-intensive applications (e.g. displaying rich reports, browsing through large data structures) as well as for low-bandwidth networks.
- More Responsive Interfaces – the improved performance leads to much more responsive interfaces, which create the illusion that updates are happening instantly. As a result the AJAX web applications appear to behave much like their desktop counterparts.
- Reduced or Eliminated "Waiting" Time – in AJAX-based applications only the relevant page elements are updates, with the rest of the page remaining unchanged. This approach eliminates the white screen (or page flicker on faster connections) and significantly decreases the idle waiting time.
- Increased Usability – as the web application is more efficient through the use of AJAX, and the client can communicate with the server without page-loads, it becomes possible to build some wonderful user interfaces that fit much better with users’ needs and expectations.
- Users Can Work with the Rest of the Page – many AJAX-based applications allow you to continue working with the rest of the page, while data is being transferred in the background. This further adds to the uninterrupted manner of the end-user experience. Some commercial components (like telerik r.a.d.ajax) allow you to call a number of AJAX callbacks simultaneously.