The concept is still identical. JS -> script -> results to JS.
The end result of an AJAX lookup is simply the output of the script provided. The PHP script simply needs to output what the JS wants to get, whether it be simple plain text, JSON format or XML or whatever.
OOP is quite easy to write an object into XML as you can write a method or chain it to the __toString and print it out and it will convert the object properties into a nice little XML package. Arrays can do this just as easily, a simple recursive method to build the XML string.
Frankly, the PHP is the easy part of the AJAX equation. Write the PHP as you would normally and even allow it to function as a standard PHP script. You can use an input from get or post to indicate it is ajax and trim it down if it is (if desired, will help on the size of the output). Then AJAX simply asks for this page and parses the results. This is honestly the more difficult part, but so long as you know what the AJAX is planning to do with it, it is a relatively simple task to perform.
So what I'm getting at here is that OOP versus procedural is ultimately no different. Its the parsed response that you are interested in; how you get there is completely up to you. I'm a huge OOP fan, but procedural definitely has its place (and is less code, less memory intensive, and [more often than not] easier to do).