您引用的特定錯誤(JSON.parse:JSON數據後的意外非空白字符)是Javascript正在解碼它時。
json_encode
從混合值參數中返回一個字符串。 json_encode Doc
您可能需要echo
以外的結果或將其添加到另一個變量稍後輸出。 例如。
while ($row = $res->fetchRow()){
$resGold = $row['gold'];
$resSilver = $row['silver'];
$resBronze = $row['bronze'];
$resGdp = $row['gdp'];
$resPopulation = $row['population'];
$resCountry = $row['country_name'];
$gold_score = ($resGold * $gold_value);
$silver_score = ($resSilver * $silver_value);
$bronze_score = ($resBronze * $bronze_value);
$score_pop = (($gold_score + $silver_score + $bronze_score)/$resPopulation);
$score_gdp = (($gold_score + $silver_score + $bronze_score)/$resGdp);
if($population == 'true'){
$result = $res->fetchRow();
$result['score'] = "$score_pop";
echo json_encode($result);
}
else if($gdp == 'true'){
$result = $res->fetchRow();
$result['score'] = "$score_gdp";
echo json_encode($result);
}
}
if($population == 'false' && $gdp == 'false'){
echo "Please select either population or gdp from view.htm";
}
如果你想編碼多行,並返回所有這些,你會過得更好添加$result
到一個數組和編碼的while
循環外,如果你不這樣做,你的JSON字符串可以看看如:
{gold:123,silver:456,bronze:789}{gold:987,silver:654,bronze:321}
這是無效的JSON,因爲它只能一次解析一個對象或數組。下面是一個有效的JSON字符串
[{gold:123,silver:456,bronze:789},{gold:987,silver:654,bronze:321}]
這是數據的數組表示形式,將解析爲您的JSON編碼對象的列表。這是您的代碼在使用數組來存儲JSON之前對其進行回顯。
$results = array();
while ($row = $res->fetchRow()){
$resGold = $row['gold'];
$resSilver = $row['silver'];
$resBronze = $row['bronze'];
$resGdp = $row['gdp'];
$resPopulation = $row['population'];
$resCountry = $row['country_name'];
$gold_score = ($resGold * $gold_value);
$silver_score = ($resSilver * $silver_value);
$bronze_score = ($resBronze * $bronze_value);
$score_pop = (($gold_score + $silver_score + $bronze_score)/$resPopulation);
$score_gdp = (($gold_score + $silver_score + $bronze_score)/$resGdp);
if($population == 'true'){
$result = $res->fetchRow();
$result['score'] = "$score_pop";
array_push($results,$result);
}
else if($gdp == 'true'){
$result = $res->fetchRow();
$result['score'] = "$score_gdp";
array_push($results,$result);
}
}
if($population == 'false' && $gdp == 'false'){
echo "Please select either population or gdp from view.htm";
}
else
{
//Note: This is in the 'else' statement as echoing the JSON then that string
// will also cause errors as it ends up not being valid JSON anymore
echo json_encode($results);
}
正如我在上面的例子,你是呼應字符串就選擇人口或GDP,因爲這是不JSON編碼及以上,否則在JSON編碼的部分,你可以嘗試解碼時遇到解析錯誤它。如果此PHP頁面旨在返回JSON編碼數據,並且您的錯誤消息不是JSON編碼,那麼無論獲取值是什麼,都可能會出現問題。
你在嘗試**編碼**你還沒有提供這些信息。 – 2013-04-27 01:45:07
@CurtisCrewe我想編碼'$ result',如上面的代碼所示。當'json_encode'在while循環中時,我得到了空白錯誤,但是當我把它放在外面時,我只得到1(最後一個)結果而不是所有結果。 – 2013-04-27 01:48:23