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

后端 未结 2 1043
醉梦人生
醉梦人生 2020-12-21 02:26

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 objec

相关标签:
2条回答
  • 2020-12-21 03:07

    jQuery uses the document object model, not the "text" that makes up that model. You only have a big piece of text in the data element that hasn't been added to the document yet.

    $(body).html(data);
    

    ... assuming the data contains valid body code. It it's an entire HTML page, then you'll need to parse it for just the body content, e.g. using indexOf or somesuch.

    0 讨论(0)
  • 2020-12-21 03:09

    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(/^[\S\s]*<body[^>]*?>/i, "")
                        .replace(/<\/body[\S\s]*$/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.

    0 讨论(0)
提交回复
热议问题