diff --git a/select2widget.module b/select2widget.module
index b45c0bc..7652d91 100644
--- a/select2widget.module
+++ b/select2widget.module
@@ -329,8 +329,8 @@ function select2widget_menu() {
     'title' => 'Ajax callback',
     'page callback' => 'select2widget_ajax_callback',
     'page arguments' => array(2, 3, 4, 5),
-    'access callback' => 'field_access',
-    'access arguments' => array('edit', 2, 3),
+    'access callback' => 'select2widget_autocomplete_access',
+    'access arguments' => array(2, 3, 4, 5),
     'type' => MENU_CALLBACK,
   );
 
@@ -338,6 +338,24 @@ function select2widget_menu() {
 }
 
 /**
+ * Tests user access for autocomplete callback.
+ */
+function select2widget_autocomplete_access($field_name, $entity_type, $bundle_name, $entity_id) {
+  $field = field_info_field($field_name);
+  $entity = NULL;
+  if ($entity_id && $entity_id !== 'NULL') {
+    $entity = entity_load_single($entity_type, $entity_id);
+    if (!$entity || !entity_access('view', $entity_type, $entity)) {
+      return FALSE;
+    }
+  }
+  if (!$field || !field_access('edit', $field, $entity_type, $entity)) {
+    return FALSE;
+  }
+  return TRUE;
+}
+
+/**
  * Menu callback: autocomplete the label of an entity.
  *
  * @param $field_name
