[英]JSON.parse() isn't working
我不明白為什么我的json.parse()
無法正常工作。 該錯誤可能就在我眼前,但我找不到它。 這是我的代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Stage galerij</title>
<link rel="icon" href="img/website/photo.jpg" type="image/jpg" sizes="any">
<link rel="stylesheet" href="css/main.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "http://www.clouddesk.be/galerij/includes/galerij_array.php";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
for (i = 0; i < arr.length; i++) {
out += "<tr><td>" +
arr[i].id +
"</td><td>" +
arr[i].File_path +
"</td><td>" +
arr[i].uitleg +
"</td></tr>";
}
out += "</table>";
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
這是php文件的代碼:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "clouddesk_robbe", "password", "clouddesk_stage");
$result = $conn->query("SELECT * FROM Fotos");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"id":"' . $rs["idFotos"] . '",';
$outp .= '"File_path":"' . $rs["Foto_File"] . '",';
$outp .= '"uitleg":"' . $rs["Uitleg"] . '",';
$outp .= '"alt":"'. $rs["Alternatief"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
它輸出以下json字符串:
[{"id":"2","File_path":"img\gallerij\Afbeelding-61.png","uitleg":"Zebra verliest zijn strepen.","alt":"Stressige zebra"},{"id":"3","File_path":"img\gallerij\download(1).jpg","uitleg":"Tomatensoep met balletjes: Nog een keer blazen en ik sla op je bek.","alt":"Grappige cartoon"},{"id":"4","File_path":"img\gallerij\download.jpg","uitleg":"Brilsmurf met een raar gezicht","alt":"Brilsmurf"},{"id":"5","File_path":"img\gallerij\download(2).jpg","uitleg":"Mooi avondlijk woestijnuitzicht.","alt":"Woestijnuitzicht"},{"id":"8","File_path":"img\gallerij\image1.jpg","uitleg":"Een mooi blaadje dat door het herfstseizoen van de boom is gevallen en eenzaam op de grond licht. Het is getrokken in de late herfstzon.","alt":"Herfstblaadje op de grond"},{"id":"9","File_path":"img\gallerij\7.jpg","uitleg":"Een kleurrijk paneel dat elke mens wel terug wat opfleurd.","alt":"Een kleurig paneel"},{"id":"10","File_path":"img\gallerij\images(1).jpg","uitleg":"Mooie foto van een golf die in de late avond getrokken is. Je ziet de reflectie van de zo in de buiging van de golf.","alt":"Golf in de avondzon"},{"id":"12","File_path":"img\gallerij\images.jpg","uitleg":"Mooie auto, het is een dure rode lexus getrokken langs de linker voorkant.","alt":"Mooie rode lexus"},{"id":"13","File_path":"img\gallerij\Nikon-D810-Image-Sample-6.jpg","uitleg":"Een uitzicht op een onbewoond eiland zoals je je voorstelt in je verbeelding","alt":"Een onbewoond eiland"},{"id":"14","File_path":"img\gallerij\image-slider-2.jpg","uitleg":"Het huis van de film up in de lucht doormiddel van duizenden ballonen aan de schoorsteen.","alt":"Huis in de lucht"},{"id":"15","File_path":"img\gallerij\demo-image.jpg","uitleg":"Een mooie foto van een zwaan.","alt":"foto van een zwaan"}]
我幾乎從w3schools.com的以下頁面上復制了所有內容: http : //www.w3schools.com/json/json_example.asp當我使用w3schools.com的原始代碼對其進行測試時,它可以很好地工作。 但是,當我更改URL變量和數組名稱時,它不再起作用。 我還用在線驗證器測試了json輸出是否有效,它說完全可以。
不要自己創建JSON輸出,請使用json_encode而不是字符串連接。 下面是一個簡單的示例;
<?PHP
$myResult = array();
$myResult["key"] = "Value";
$myResult["innerArray"] = array();
$myResult["innerArray"]["key"] = "Value";
$myResult["innerArray"]["isOk"] = true;
$myResult["innerArray"]["amount"] = 100;
echo json_encode($myResult);
?>
我的示例的工作示例https://ideone.com/4Kvvpj
使用JSON_encode(); 用於在php文件中編碼json值
JSON.parse()無法正常工作,因為json字符串不正確。 File_path
是img\\gallerij\\Afbeelding-61.png
但應該是img/gallerij/demo-image.jpg
。 請在json字符串中的任何位置更改File_path
。
單擊此處獲取jsfiddle示例。
File_path
是從$outp .= '"File_path":"'. $rs["Foto_File"] . '",';
因此將\\
替換為/
。
好處:您可以直接在客戶端中使用img/gallerij/demo-image.jpg
類的JSON.parse()
獲得路徑,因此該路徑可以直接用作DOM元素的src
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.