diff --git a/includes/ajax.inc b/includes/ajax.inc
index 50e8e28..69343a3 100644
--- a/includes/ajax.inc
+++ b/includes/ajax.inc
@@ -394,8 +394,8 @@ function ajax_form_callback() {
   if (!empty($form_state['triggering_element'])) {
     $callback = $form_state['triggering_element']['#ajax']['callback'];
   }
-  if (!empty($callback) && function_exists($callback)) {
-    $result = $callback($form, $form_state);
+  if (!empty($callback) && is_callable($callback)) {
+    $result = call_user_func_array($callback, array(&$form, &$form_state));
 
     if (!(is_array($result) && isset($result['#type']) && $result['#type'] == 'ajax')) {
       // Turn the response into a #type=ajax array if it isn't one already.
