How to pass array from jQuery to PHP with AJAX in WordPress?

If assign_categories() is in a class, you have to call the action in a different way.

add_action( 'wp_ajax_assign_categories', 'assign_categories' );

becomes

add_action( 'wp_ajax_assign_categories', array( $this, 'assign_categories' ) );

The $this in this context is the class.