views:

270

answers:

4
jQuery.get(window.location.href, function(data) {
  alert(data);
  alert($(data).html());
});

The first popup is all the HTML good and healthy.

The second popup is blank. Why? (the HTML is XHTML compliant)

A: 

Because it will return a string with all the HTML. data isn't a jQuery object.

peirix
I know this, hence the second attempt tries to turn it into a jQuery object with $(data) !!!
joshcomley
+3  A: 

From the documentation:

The HTML string cannot contain elements that are invalid within a div, such as html, head, body, or title elements.

If you are fetching a complete HTML document, then you will have lots of elements that may not appear in a div.

David Dorward
A: 

I tried this on my PC. You get back the following:

"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1"><title>

</title><link href="App_Themes/selectors.css" rel="stylesheet" type="text/css" /></head>................etc

This will not parse into a jQuery obejct. You get needs to be on a server-side script page that will explicitly output HTML.

I suppose if you really need an item in the HTML then you can strip it out from the text using the built-in string methods.

James Wiseman
A: 

Change your code to something like this

$('#yourContainingDiv').html(data);

The html in data will be placed in the div tag

Colin G
Given the answer from David Dorward, this would fail, as data cannot be placed in a div
James Wiseman