Saw this example on the jQuery examples page for Ajax:
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: someFunction
});
How do I take a string like:
var t = '<foo><bar>something</bar></foo>';
And convert that to a XML DOM object? cross-browser?
UPDATE : Please see comments to karim79's answer.
Source: Tips4all
Wrap it in a jQuery object. Then use jQuery's normal DOM manipulation methods on it.
ReplyDeletevar t = $('<foo><bar>something</bar></foo>');
//loop over 'bar' nodes
t.find('bar').each(function () {
alert($(this).text());
});
If you want to convert it back to a plain string (after modifying it for example) you can do it like so:
//then convert it back to a string
//for IE
if (window.ActiveXObject) {
var str = t.xml;
alert(str);
}
// code for Mozilla, Firefox, Opera, etc.
else {
var str = (new XMLSerializer()).serializeToString(t);
alert(str);
}
EDIT: The $.ajax manual says (on the processData option):
By default, data passed in to the data
option as an object (technically,
anything other than a string) will be
processed and transformed into a query
string, fitting to the default
content-type
"application/x-www-form-urlencoded".
If you want to send DOMDocuments, or
other non-processed data, set this
option to false.
So if you're passing a jQuery object to the server, you'll need to set that to true, or omit it altogether (it is set to true by default). Hope that helped.
Just a heads up on calling find - if it's a top level element you need to use filter instead.
ReplyDeletevar t = $('<foo><bar>something</bar></foo>');
//loop over 'foo' nodes
t.filter('foo').each(function () {
alert($(this).find('bar').text());
});
you can use this simple code for convert your xml tags to text
ReplyDeletevar temp_var = $("<p/>").append($(your_xml_data)).htML()