我有一个ajax帖子,它将网站发布到php然后返回它,我使用jquery来查找并返回元素文本。这是一些元素的工作,但不是全部,我不明白为什么。对于body meta和title标签,它返回undefined。是我的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);
?>
答案 0 :(得分:4)
您的AJAX调用期望JSON数据响应请求,因此response
回调中的success
变量将成为某种对象。你不能将常规对象传递给jQuery函数,它不是为处理它而设计的。
使用该对象,使用点 - object.property
- 或方括号 - object["property"]
- 符号。或者更改服务器端代码,使其返回可用格式(HTML或XML)而不是JSON。