gpt4 book ai didi

php - 为什么 jquery 不能找到并返回所有 html 标签,即 body/title

转载 作者:行者123 更新时间:2023-12-01 02:58:34 25 4
gpt4 key购买 nike

我在这方面花了很长时间,但不明白为什么它不起作用。我正在使用 ajax 向 php curl 发送一个帖子,其中包含一个 url,然后返回到 ajax。当我发送警报时,该页面的所有 html 都会显示在警报中。现在我想使用 jquery 查找每个元素,即正文、h1、标题并输出内容,但是当我这样做时,它不适用于正文或标题。这是为什么?

这是我的jquery

        $.ajax({
type: "POST",
url: "senddom.php",
data: {"dataString" : dataString },
success: function(response) {
$('body').append("<p> contents of title:" + $(this).find('title').html() + "</p>");
$('body').append("<p> contents of all: " + $(this).find('body').html() + "</p>");

$(response).find('h1').each(function() {
$('body').append("<p> contents of H1: " + $(this).text() + "</p>");
});

这是我的 php

<?php 

$site= $_POST['dataString']; // get data
function curl_get($site){
$useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

$data=curl_exec($ch);
curl_close($ch);
return $data;


}

function getdom($site){
$html = curl_get($site);
$xml = new DOMDocument();
@$xml->loadHTML($html);
echo($html);


}

echo getdom($site);

?>

最佳答案

在成功 block 内:$(this) -> $(response)

后续:全文 HTML 与片段

虽然这似乎可以解决眼前的问题,但它取决于您的响应是否是完整的 HTML 正文。

在这种情况下,响应似乎是全文 HTML。

jQuery parseHTML 方法不处理全文 HTML,不幸的是 response 将无法正确解析。更多信息请参阅:https://github.com/jquery/jquery/blob/master/src/core.js

如果您希望解析全文 HTML,一种方法是使用 DOMParser API 。值得注意的是,目前缺乏对解析"text/html"的支持;仅在 Firefox 中可用。另一种选择是 document.implementation,它支持除 IE<9 之外的所有版本。

也就是说,这是您想要使用 DOMParser 的示例 --

parser = new DOMParser();
doc = parser.parseFromString(response, "text/html");
$response = $(doc)
$response.find('title').text()

您想要使用documentation.implementation的示例 --

var doc = document.implementation.createHTMLDocument("");
var doc_el = doc.documentElement;
doc_el.innerHTML = response;
$response = $(doc_el); //
$response.find('title').text()

有关更多信息,我将引用我在 github 上找到的一个不错的 jQuery 插件(处理 x 浏览器支持):jquery.parsehtml.js .

关于php - 为什么 jquery 不能找到并返回所有 html 标签,即 body/title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com