OpenMRS uses dwr for AJAX. In a sentence, dwr converts java objects to javascript and vice versa.

DWR in core openmrs

Using DWR in a JSP page

<script src="<openmrs:contextPath/>/dwr/interface/DWRPatientService.js"></script>

DWRPatientService.findPatients("John", false, objectsFound);

function objectsFound(patients) {
  alert("There are " + patients.length + " patients named john");


Adding DWR into your module

Add to config.xml:

			<create creator="new" javascript="DWRMyModuleService">
				<param name="class" value="@MODULE_PACKAGE@.web.DWRMyModuleService"/>
				<include method="getAllLocations"/>

			import @MODULE_PACKAGE@.web.DWRMyModuleService;

Create this class:

public class DWRMyModuleService {

 public List<String> getAllLocations() {
     List<String> locationNames = new Vector<String>();
     for (Location loc : Context.getAllLocations()) {
     return locationNames;