将信息结果返回到多个输入字段



我正在尝试创建一个简单的Web元素,根据请求,通过使用:php/ajax/jquery检索网页的页面标题/元描述。

我已经让它工作到一定程度,尽管我不确定如何在 PHP 中准备返回的信息并在成功时,以便$title出现在输入字段中,$description出现在单独的输入字段中。

目前,它只是返回到一个回声块。

.HTML

<a href="javascript:retrievepageinformation()" >Action request</a>
<div>The URL</div>
<input name="theaddress" type="text" id="theaddress"  value="http://">
<div>The result</div>
<input name="title" id="title"  value="" />
<input name="description" id="description"  value="" />

爪哇语

function retrievepageinformation () {
$("#title").val('Retrieving..');
$("#description").val('Retrieving..');
var dataqueryurl = $("#theaddress").val();
$.ajax({  
type: "POST",  
url: "request-information.php",  
data: "dataqueryurl="+ dataqueryurl,  
success: function(dataresult){  
    $("#title").ajaxComplete(function(){ 
    $(this).val(dataresult);
    });
 } 
}); 
} 

PHP (request-information.php)

if(isSet($_POST['dataqueryurl'])) {

function file_get_contents_curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$dataqueryurl = $_POST['dataqueryurl'];
$html = file_get_contents_curl($dataqueryurl);
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
// Get and display what you need:
$title = $nodes->item(0)->nodeValue;
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++)
{
    $meta = $metas->item($i);
    if($meta->getAttribute('name') == 'description')
        $description = $meta->getAttribute('content');
}

// Data to pass back to input field 'Title'
echo $title;
// Data to pass back to input field 'Description'
echo  $description;

}

要从请求信息中传回信息.php您可以使用数组json_encode的概念。

功能file_get_contents_curl($url){ $ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;

}

$dataqueryurl = $_POST['dataqueryurl'];

$html = file_get_contents_curl($dataqueryurl);

解析从这里开始:

$doc = new DOMDocument();

@$doc->loadHTML($html);

$nodes = $doc->getElementsByTagName('title');

获取并显示您需要的内容:

$title = $nodes->item(0)->nodeValue;

$metas = $doc->getElementsByTagName('meta');

对于 ($i = 0;$i <$metas->长度;$i++)

{

$meta = $metas->item($i);
if($meta->getAttribute('name') == 'description'){
    $description = $meta->getAttribute('content');
}

}

$result = array('title'=>$title, 'desc'=>$description);

回声json_encode($result);

}

要在 javascript 中获取这些信息,你可以在 ajax 的成功回调中使用 $.parseJSON()。

函数检索页面信息 () {

$("#title").val('Retrieving..');
$("#description").val('Retrieving..');
var dataqueryurl = $("#theaddress").val();
$.ajax({  
type: "POST",  
url: "request-information.php",  
data: "dataqueryurl="+ dataqueryurl,  
success: function(dataresult){  
    dataresult = $.parseJSON(dataresult);
    $("#title").val(dataresult.title);
    $("#description").val(dataresult.desc);
 } 
}); 

}

在 php 端

echo json_encode(array("title"=>"My title","description"=>"Test description"));

在阿贾克斯的成功中

success: function(dataresult){  
       $("#title").val(dataresult.title);
       $("#description").val(dataresult.description);
 } 

仅供参考

json_encode

最新更新