The "Content-Type" header needs to be set
to"text/xml". In servlets this may be done using the
HttpServletResponse.setContentType()should be set to "text/xml" when the
return type is XML. Many XMLHttpRequest implementations will result in
an error if the "Content-Type" header is set The code below shows how to
set the "Content-Type". response.setContentType("text/xml"); response.getWriter().write("<response>invalid</response>"); You may also want to set whether or not to set the caches header for
cases such as autocomplete where you may want to notify proxy
servers/and browsers not to cache the results. response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write("<response>invalid</response>"); Note to the developer: Internet Explorer will automatically use a cached
result of any AJAX response from a HTTP GET if this header is not set
which can make things difficult for a developer. During development mode
you may want set this header. Where do I store state with an AJAX
client. As with other browser based web applications you have a few options which include: * On the client in cookies - The size is limited (generally around 4KB X
20 cookies per domain so a total of 80KB) and the content may not be
secure unless encrypted which is difficult but not impossible using
JavaScript. * On the client in the page - This can be done securely but can be
problematic and difficult to work with. See my blog entry on Storing
State on the Client for more details on this topic. * On the client file system - This can be done if the client grants
access to the browser to write to the local file system. Depending on
your uses cases this may be necessary but caution is advised. * On the Server - This is closer to the traditional model where the
client view is of the state on the server. Keeping the data in sync can
be a bit problematic and thus we have a solution Refreshing Data on
this. As more information processing and control moves to the client
where state is stored will need to be re-evaluated.
Join MindStick Community
You need to log in or register to vote on answers or questions.
We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our
Cookie Policy &
Privacy Policy.
response.setContentType("text/xml");
response.getWriter().write("<response>invalid</response>");
You may also want to set whether or not to set the caches header for cases such as autocomplete where you may want to notify proxy servers/and browsers not to cache the results.
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<response>invalid</response>");
Note to the developer: Internet Explorer will automatically use a cached result of any AJAX response from a HTTP GET if this header is not set which can make things difficult for a developer. During development mode you may want set this header. Where do I store state with an AJAX client.
As with other browser based web applications you have a few options which include:
* On the client in cookies - The size is limited (generally around 4KB X 20 cookies per domain so a total of 80KB) and the content may not be secure unless encrypted which is difficult but not impossible using JavaScript.
* On the client in the page - This can be done securely but can be problematic and difficult to work with. See my blog entry on Storing State on the Client for more details on this topic.
* On the client file system - This can be done if the client grants access to the browser to write to the local file system. Depending on your uses cases this may be necessary but caution is advised.
* On the Server - This is closer to the traditional model where the client view is of the state on the server. Keeping the data in sync can be a bit problematic and thus we have a solution Refreshing Data on this. As more information processing and control moves to the client where state is stored will need to be re-evaluated.