It's incredibly easy to use AJAX in the DNN 4.5.X versions. In this post I describe the two ways in which you may use AJAX in a DNN module.
Use Control Definitions
Assuming AJAX is already installed in the web server that runs DNN, a module will be dynamically wrapped in an Update Module by doing one of two things:
1) Adding the line below to the control node of a control in the .dnn manifest:
<supportspartialrendering>truesupportspartialrendering>
2) Select de checkbox for Supports Partial Rendering in the control definition for the control that will use AJAX. Control definitions are reached after selecting a control to edit in a specific Module Definition in Host>Module Definitions>.

When the Partial rendering is enabled, the Microsoft Ajax Library can be used as well as the popular Control Toolkit.
Try this simple example to test a module that has been AJAX-enabled through module definitions. Add a Label and an UpdatePanel to the view control of a module. The put a second Label and a Button inside the UpdatePanel.

Add an empty click event for the Button to create a postback. Then in the Page_Load event add a timer and assign the current datetime value to the labels.
System.Threading.Thread.Sleep(3000)
Label1.Text = DateTime.Now()
Label2.Text = DateTime.Now()
Clicking on the button shpould only update the datetime value of the label inside the update panel while the first one is unchanged.

Developer control
Remember that there can exist one and only one ScriptManager object in a page and since Dotnetnuke uses a single page, it's only logical that the framework and not the modules should be responsible of adding it dynamically. That is exactly what the Dotnetnuke.Framework.Ajax class does. The class has 8 methods besides its constructor:

Taken from the class documentation:
- AddScriptManager:
AddScriptManager is used internally by the framework to add a ScriptManager control to the page
- ContentTemplateContainerControl:
ContentTemplateContainerControl gets a reference to the ContentTemplateContainer control within an UpdatePanel
- CreateUpdatePanelControl:
UpdatePanelControl dynamically creates an instance of an UpdatePanel control
- IsInstalled:
IsInstalled can be used to determine if AJAX is installed on the server
- RegisterScriptManager:
RegisterScriptManager must be used by developers to instruct the framework that AJAX is required on the page
- RemoveScriptManager:
RemoveScriptManager will remove the ScriptManager control during Page Render if the RegisterScriptManager has not been called
- ScriptManagerControl:
ScriptManagerControl provides a reference to the ScriptManager control on the page
- SetScriptManagerProperty:
SetScriptManagerProperty uses reflection to set properties on the dynamically generated ScriptManager control
It is possible to use IsInstalled() to determine if AJAX is installed in the web server, and couple dwith RegisterScriptManager Dotnetnuke will add the ScriptManager control to the page so that the module can use Ajax. The result of the previous example will be the same, but without enabling partial rendering in the module.
If DotNetNuke.Framework.AJAX.IsInstalled() Then
DotNetNuke.Framework.AJAX.RegisterScriptManager()
'Do some stuff
End If