У меня есть базовая функция AJAX, которая вызывает скрипт PHP, и скрипт возвращает совершенную строку JSON, я проверил ее.
Вот как выглядит код AJAX:
function onLoad() {
$.ajax({
url: "php/api.php",
data: {symbol: "MSFT"},
async: true,
dataType: 'text',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function (data) {
console.log("data is: ");
console.log(JSON.parse(data));
},
error: function (xhr, ajaxOptions, thrownError) {
console.log("There was an error");
console.log(thrownError);
}
});
}
Вот как выглядит код php:
<?php
error_reporting(0);
$symbol =$_GET['symbol'];
$data = array("year" => 2018);
$data_string = json_encode($data);
function grabHTML($function_host_name, $url)
{
$ch = curl_init();
$header=array('GET /1575051 HTTP/1.1',
"Host: $function_host_name",
'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language:en-US,en;q=0.8',
'Cache-Control:max-age=0',
'Connection:keep-alive',
'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36',
);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt( $ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR,$f = fopen(__DIR__ . "/error.log", "w+"));
$returnHTML = curl_exec($ch);
if($errno = curl_errno($ch)) {
$error_message = curl_strerror($errno);
echo "cURL error ({$errno}):\n {$error_message}";
}
curl_close($ch);
return $returnHTML;
} // end of function grabHTML
$url = "https://newsapi.org/v2/everything?q=" . $symbol . "&from=2018-10-29&sortBy=publishedAt&apiKey=0cc1ee750c69497899f81b14d32dfbf9";
$results = grabHTML("newsapi.org", $url);
echo $results;
Однако на внешнем интерфейсе тип данных предварительно добавляется в строку JSON, т. Е.
string(17484) " (perfect JSON string here) "
Таким образом, другой "добавляется в конец данных. Это приводит к сбою функции JSON.parse ().
Я перепробовал все "dataType: 'text'", "dataType: 'html'" и "dataType:
'json' ", и он все равно добавляет тип данных каждый раз.
Мне нужно остановить добавление типа данных.
Brent.