Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

jquery - Trying to select a 'body' tag from html that is returned by get() request

I'm making an ajax get call that returns me contents of html page. I'm trying to select contents of the body tag but my selector returns an empty jquery object.

$.get(filename, function(data) {
    console.log($("body", data));
})

where data is contents of html file.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

jQuery cannot select body of the response string, because the <body> tag disappears when the string is converted using $().

Hence, you have to select the body from the data string in another way, such as Regular expressions. Example:

$.get(filename, function(data) {
    var body = data.replace(/^[Ss]*<body[^>]*?>/i, "")
                    .replace(/</body[Ss]*$/i, "");
    //Optionally, convert the string to a jQuery object:
    body = $(body);
    console.log(body);
}))

Note: My Regular Expression assumed a wellformed HTML document, where > are correctly shown using HTML entities. If this is not the case, more advanced RegExps has to be used, such as the ones shown at this question.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...