I'm not overly skilled with JS or AJAX, but I'm not sure your ajax call is structured properly. You have to pass along a data array which contains the callback function, and I don't see that listed in your code (which may explain why an error is returned, but no changes are saved). I've never used AJAX in the Settings API capacity, though, so take that with a grain of salt.
Have you reviewed the AJAX in Plugins documentation?