JavaScript prepares ajax request based on process and current HTML DOM tree onstart JavaScript code is executed JavaScript sends ajax request from client to server JSF retrieves ajax request JSF processes the request lifecycle on JSF component tree based on process actionListener JSF backing bean method is executed action JSF backing bean method is executed JSF prepares ajax response based on update and current JSF component tree JSF sends ajax response from server to client JavaScript retrieves ajax response if HTTP response status is 200, onsuccess JavaScript code is executed else if HTTP response status is 500, onerror JavaScript code is executed JavaScript performs update based on ajax response and current HTML DOM tree oncomplete JavaScript code is executed