我在这个错误上被困了一段时间,我似乎无法找到它。我收到这个错误:
错误:SyntaxError:位置1的JSON中的意外字符串
我正在尝试使用此dashboard.js文件对dashboard.php执行AJAX请求:
$(".next").click(function(){
console.log("next uitgevoerd");
i++;
huidige_pagina += 1;
document.getElementById("pagina").innerHTML = huidige_pagina;
$.ajax({
type: 'POST',
url: 'http://goad-as-05/ramon/logic/dashboard.php',
contentType: 'application/x-www-form-urlencoded',
dataType: 'JSON',
data: { "pagina": i },
success: function (resultaat) {
alert(resultaat);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('ERROR: ' + errorThrown);
}
});
});
这是php代码:
<?php
header("Content-Type: application/json; charset=utf-8", true);
if(isset($_POST["pagina"])){
$pageno = $_POST["pagina"];
echo $pageno;
} else {
echo "foutje";
}
// $url will contain the API endpoint
$url = "https://app.teamleader.eu/api/getContacts.php";
// $fields contains all the fields that will be POSTed
$fields = array(
"api_group"=>(GROUP_KEY),
"api_secret"=>(SECRET_KEY),
"amount"=>2,
"pageno"=>$pageno
);
// Make the POST request using Curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
// Decode and display the output
$api_output = curl_exec($ch);
echo curl_error($ch);
//$json_output = json_decode($api_output);
echo json_encode($api_output);
header('application/json');
// Clean up
curl_close($ch);
?>
这是我的HTML:
<div class="pagina">
<p id="pagina">1</p>
</div>
我确定这不是我的网址,因为这两个文件都在同一个文件夹中。
我必须先使用JSON.stringify("pagina":i)
并使用它吗?
感谢任何帮助,这可能是我似乎无法找到的最小错误。
解决方案: 加载时用ctrl + F5刷新我的javascript,完全忘记缓存....感谢大家试图帮助!
Ramon的
答案 0 :(得分:0)
在PHP中,输出后不能使用HEADER函数。
echo json_encode($api_output);
header('application/json'); // delete this line
服务器最终产生的错误导致JSON字符串无法使用。
修改强>
header("Content-Type: application/json; charset=utf-8", true);
if(isset($_POST["pagina"])){
$pageno = $_POST["pagina"];
echo $pageno; // ERROR
} else {
echo "foutje";
}
使用 echo $ pageno; 行写入POST发送的结果,生成错误。
编辑2:
echo curl_error($ch);
此行还会在JSON中生成未编码的输出
编辑3: 我很高兴您能够找到问题的解决方案并防止它再次发生我建议您编辑JS文件地址,以便:
echo 'dashboard.js?'.time(); // disable browser cache
答案 1 :(得分:0)
问题在于浏览器缓存,我忘了使用ctrl + f5重新加载缓存并以这种方式重新加载我的javascript,感谢大家的帮助!