I'm using jQuery and trying to load the body from an external HTML file.
It works if I try to load some div:
$('body').load('example.html #content');
But I'm unable to do something like this:
$('body').load('example.html body');
From http://api.jquery.com/load
jQuery uses the browser's .innerHTML property to parse the retrieved document and insert it into the current document. During this process, browsers often filter elements from the document such as <html>, <title>, or <head> elements. As a result, the elements retrieved by .load() may not be exactly the same as if the document were retrieved directly by the browser.
Reading the above, it seems possible that your browser be only returning the body innerHTML. This obviously should be the same as requesting body, but maybe it's causing an error because body is not found?
I'd suggest trying a different browser.
When you use load without a selector, it strips the <html>, <head>, and <body> tags, but leaves all of the children of <head> and <body> intact, including title, script, and style tags. However, when you use a selector, it is applied after the body tag is stripped, so it's impossible to match against it.
Instead, wrap all of your body content inside another tag, and select that tag instead:
<html><head><title>Hello!</title</head>
<body>
<div id="jquery-load-point">
... <!-- rest of body content -->
</div>
</body>
</html>
Now, you can load it like this:
$("#destination").load("http://my.url/to/page #jquery-load-point");
If you want to load the whole body, $('body').load('example.html'); should be enough.
If not, could you explain why ?
Anyway, the solution provided by Steve is the right one.