Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么jquery不能找到并返回所有html标记,即body/title_Php_Jquery - Fatal编程技术网

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

Php 为什么jquery不能找到并返回所有html标记,即body/title,php,jquery,Php,Jquery,我花了很长时间在这方面,不明白为什么它不起作用。我正在使用ajax向php curl发送一篇文章,其中包含一个url,然后返回ajax。当我发送警报时,该页面的所有html都显示在警报中。现在,我想使用jquery查找每个元素,即body、h1、title并输出内容,但当我这样做时,它对body或title不起作用。为什么呢 这是我的jquery $.ajax({ type: "POST", url: "senddom.php", data:

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

这是我的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>");
});
$.ajax({
类型:“POST”,
url:“senddom.php”,
数据:{“dataString”:dataString},
成功:功能(响应){
$('body').append(标题内容:“+$(this).find('title').html()+”

); $('body').append(“所有内容:”+$(this.find('body').html()+“

”); $(响应)。查找('h1')。每个(函数(){ $('body').append(H1的内容:“+$(this).text()+”

”; });
这是我的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);

?>
loadHTML($html);
echo($html);
}
echo getdom($site);
?>

在您的成功区块内:
$(此)
->
$(响应)

跟进:全文HTML vs片段

虽然这似乎解决了眼前的问题,但这取决于您的响应是否是完整的HTML

在本例中,似乎
response
是全文HTML

jQuery parseHTML方法不处理全文HTML,不幸的是,
response
无法正确解析。有关详细信息,请参阅:


在您希望解析全文HTML的情况下,一种方法是使用。值得注意的是,对解析
“text/HTML”的支持目前缺少
;仅在Firefox中可用。另一种选择是
文档。实现
,它在所有方面都有支持,但在
中找不到
标记(它在
中,或者至少应该是格式良好的HTML,这个问题的其余部分需要时间来理解,虽然我理解这一点,但我更关心的是,为什么主体不起作用,因为它不包含在其他元素(如标题)中。谢谢你的回答,我已经这样做了,它带回了same结果返回未定义的Stillum..什么响应返回为?全文HTML?在警报中,它返回为全文htmlok。什么结果返回为未定义?$(响应)。查找('body')返回什么?这是一个解析问题…请参阅:
parser = new DOMParser();
doc = parser.parseFromString(response, "text/html");
$response = $(doc)
$response.find('title').text()
var doc = document.implementation.createHTMLDocument("");
var doc_el = doc.documentElement;
doc_el.innerHTML = response;
$response = $(doc_el); // 
$response.find('title').text()