-1

我有 ajax 帖子,它将网站发布到 php,然后返回它,我正在使用 jquery 查找并返回元素文本。这是在某些元素上起作用,但不是全部,我不明白为什么。对于正文元和标题标签,它返回未定义。是我的 php 还是 ajax 帖子?

jQuery/ajax

var dataString = name;
        //alert (dataString);return false;

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

 $(response).find('p').each(function() {
  $('body').append("<p> contents of p: " + $(this).html() + "</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);
    // Create a new DOM Document
    $xml = new DOMDocument();
    @$xml->loadHTML($html);
   echo json_encode($html);
}

echo getdom($site);
?>
4

1 回答 1

4

您的 AJAX 调用需要 JSON 数据来响应请求,因此回调response中的变量success将是某种对象。您不能将常规对象传递给 jQuery 函数,它不是为处理它而设计的。

像使用任何其他对象一样使用对象,使用点 - object.property- 或方括号 - object["property"]- 符号。或者更改您的服务器端代码,使其返回可用格式(HTML 或 XML)而不是 JSON。

于 2013-01-24T20:55:44.693 回答