JSON or FJSON (a JSON object wrapped in a function) would be my preferred solution. Either via script hacks or XHR. The Y! APIs mostly support FJSON.
An important thing to avoid with AHAH for example is not having sites that progressively enhance. If you get used to throwing whole chunks of markup into the page it's easy to forget people who aren't able to use your dynamic page loading solution.
Some kind of JSON will also allow you to get a status on the information that you got back from the server. While you could do this HTTP status codes it would be a lot harder to do x-browser especially if you are using a library to do your AJAX/script inclusion.
If you have status codes it allows you to do more complex operations, such as highlighting in red the parts of a form field that weren't completed. If you have to replace the whole form is would be pretty inefficient.
An important thing to avoid with AHAH for example is not having sites that progressively enhance. If you get used to throwing whole chunks of markup into the page it's easy to forget people who aren't able to use your dynamic page loading solution.
Some kind of JSON will also allow you to get a status on the information that you got back from the server. While you could do this HTTP status codes it would be a lot harder to do x-browser especially if you are using a library to do your AJAX/script inclusion.
If you have status codes it allows you to do more complex operations, such as highlighting in red the parts of a form field that weren't completed. If you have to replace the whole form is would be pretty inefficient.
DISCLAIMER: I work for Y!