Код работает хорошо, хотя улучшения могут быть сделаны. Убедитесь, что вы включили jquery сценарии CDN. Убедитесь, что вы звоните getTitle
в теге <script></script>
. Убедитесь, что путь к сценарию php действителен. Как указывалось ранее, нажатие клавиши F12 в браузере -> вкладка «Сеть» может помочь в диагностике проблем с запросами / ответами.
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
function getTitle(externalUrl){
var proxyurl = "./get_external_content.php?url=" + externalUrl;
$.ajax({
url: proxyurl,
async: true,
success: function(response) {
alert(response.title);
},
error: function(e) {
alert("error! " + e);
}
});
}
getTitle("https://www.corriere.it/economia/tasse/cards/irpef-2020-come-cambiano-scaglioni-studio-riforma-aliquote/mosse-governo_principale.shtml");
</script>
</head>
<body>
Для лучшего результата необходимо указать тип содержимого JSON в ответе PHP:
<?php
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;
}
$url = $_REQUEST["url"];
$html = file_get_contents_curl($url);
preg_match('/<title>(.+)<\/title>/',$html,$matches);
$title = $matches[1];
header('Content-Type: application/json', true);
echo json_encode(array("url" => $url, "title" => $title));