Bit like xajax. Works but could be simpler?

Bit like xajax. Works but could be simpler?

I've used xajax for years. It was simple and worked well for what I needed it for.

Then I started wanting what jquery had to offer and didn't want 2 ajax libraries to load, so I dumped xajax.

I ended up missing one thing I commonly did with xajax. I would define my response server side and affect multiple elements, with a single call.

To this end, I wrote this.
;(function($) {
  $.doAjax = function(func,values) {
    $.ajax({ data: values, url: '/ajax/' + func, type: 'POST', dataType: 'json', timeout: 5000,
      error: function(){ alert('Error loading JSON document: ' +  func); },
      success: function(data){
        if(data){
     $.each(data, function(){
       if ( this.action == 'attr' ) $(this.target).attr(this.content);
       if ( this.action == 'removeAttr' ) $(this.target).removeAttr(this.content);
       if ( this.action == 'addClass' ) $(this.target).addClass(this.content);
       if ( this.action == 'removeClass' ) $(this.target).removeClass(this.content);
       if ( this.action == 'html' ) $(this.target).html(this.content);
       if ( this.action == 'text' ) $(this.target).text(this.content);
       if ( this.action == 'val' ) $(this.target).val(this.content);
       if ( this.action == 'eval' ) {
              try {
           eval(this.content);
         }
         catch(err) {
                alert(err);
         };
       };
          });
        }
      }
    });
    return this;
  };
};

The request url having the function name as part of it is the result of me using 'clean urls'.

I then call this inside a setTimeout loop to update the content periodically:
      $.doAjax('update',{});

My server side php code to respond to this request:
$uri = split('/',$_GET['q']);
$s['action'] = urldecode($uri[0]);
$s['f1'] = urldecode($uri[1]);
if ( $s['action'] == 'ajax' )
{
  header("Content-type: text/plain");
  $response = array();
  if ( $s['f1'] == 'update' ) {
    $response[] = array('action'=>'html','target'=>'#history','content'=>'some content');
    $response[] = array('action'=>'addClass','target'=>'#history','content'=>'updated');
  }
  echo json_encode($response);
}


I can now define whatever I want to occur server side simply by adding to the response array, and have it applied client side against any number of elements without defining explicit callbacks for each.
It works so far, but I'm sure a more experienced JavaScript coder could shorten this section:
       if ( this.action == 'attr' ) $(this.target).attr(this.content);
       if ( this.action == 'removeAttr' ) $(this.target).removeAttr(this.content);
           ... etc ...

into a one liner like this:
$(this.target).(this.action)(this.content);

That of course doesn't work. I've tried turning my variable this.action into references to the jquery functions with various eval's, but no luck.
I know you can reference a regular JavaScript function via a variable like so:
var function_name = 'call_me';
eval( function_name + '()');

But this doesn't work when you put it in a jquery chain, nor would I want to define my content within the eval.

Thoughts?