Wanneer ik manueel naar test.php krijg ik deze gegevens te zien als json, maar wanneer ik dit via javascript doe geeft de cURL request een error 301.
Dit is test.php
<?php
header('Content-Type: application/json');
$url = $_GET['url'];
$result = array();
$pagina = loadFile($url);
$info = false;
if(strpos($pagina, 'Op voorraad')!==false){
$info = true;
}
$pos2 = strpos($pagina,"a-size-medium a-color-price");
$price = substr($pagina,$pos2+30,100);
$price = str_replace(' ', '', $price);
$price = substr($price,5,10);
$price = strtok($price, '<');
$price = str_replace(",",".",$price);
$price = str_replace("\n","",$price);
$result = array('available'=>$info,'price'=>$price);
echo json_encode($result);
function loadFile($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
via de browser toont dit
{"available":true,"price":"161.67"}En met deze javascript code:
$("[data-product]").each(function( index ) {
var url= $( this ).data('url');
$.post("test.php?url="+url+"/", {}, function(data, status){
console.log(data);
});
});Geeft de cUrl request enkel dit terug
<html>\r\n<head><title>301 Moved Permanently<\/title><\/head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently<\/h1><\/center>\r\n<hr><center>Server<\/center>\r\n<\/body>\r\n<\/html>\r\n
Een enkele request in plaats van loopen geeft hetzelfde resultaat.
Vanuit een php-script de json opvragen geeft ook 301.
Follow redirects in curl heeft geen effect.
De json laden in een iframe geeft ook 301, maar met file_get_contents ipv curl werkt dit wel.
<?php
echo '<iframe src="[MIJNSITE]/test.php?url='.$product['url'].'/"></iframe>';?>file_get_contents met jquery post lukt dan weer niet.
Iemand die me hierbij kan helpen?