我創造了非常非常簡單的PHP程序從數據庫和結構一個PHP數組中獲取數據,然後將其轉換成JSON:XMLHttpRequest不喜歡我的JSON?
$i = 0;
while($row = mysqli_fetch_array($result)) {
$output[$i] = array();
$output[$i]["tag"] = $row["tag"];
$output[$i]["desc"] = htmlspecialchars($row["desc"]);
if ($row["content"] != "") {
$output[$i]["content"] = $row["content"];
}
if ($row["href"] != NULL) {
$output[$i]["params"]["href"] = $row["href"];
}
$i++;
}
header('Content-Type: application/json; charset=utf-8');
echo json_encode($output, JSON_FORCE_OBJECT);
我希望利用這個codepen內,此處鏈接:http://codepen.io/mrcarter7/pen/pJMxzr
在這種codepen我有以下的JavaScript(從一個教程這裏找到:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest):
function reqListener() {
console.log(this.responseText);
console.log(this.status);
}
var url = "http://millenix.com/api/html";
// tutorial url: https://api.github.com/repos/mozilla/kuma/contributors
var oReq = new XMLHttpRequest();
oReq.addEventListener('load', reqListener);
oReq.open("get", url, true);
oReq.send();
我想將它映射到由下面的邏輯中使用javascript對象在JavaScript中,但遇到了問題,所以我想我會保持簡單,只是試圖讓它在控制檯輸出,你會看到它不會,但如果你用網址替換url變量值上面鏈接的教程(對不起,我不能發佈兩個以上的鏈接),它工作正常!
我的php/json有什麼問題嗎?還是有一種替代的方式從外部源獲取json並將其存儲爲本地JavaScript對象以進行處理。
BONUS:另外,爲什麼我的json格式不像教程的json?
CORS正是我正在尋找讓我真正在codepen中獲得JSON。奇怪的是,我還不得不在Javascript中的URL變量中添加尾隨的「/」以使其起作用。你對html變量是正確的。我現在正在處理這個問題。一旦我有工作,我會批准你的答案。支持。再次感謝您指引我走向CORS。 – mrcarter7
好吧,在我的URL變量中添加CORS和尾部的斜線後,我所要做的就是將我的邏輯移動到加載事件處理程序中,就像您說的那樣,因爲它的執行是異步的。之後,我只需聲明我的html變量併爲其分配JSON.parse(this.response)的值。 (因爲響應返回一個字符串,而不是一個對象) 可以看到它在codepen上工作:http://codepen.io/mrcarter7/pen/pJMxzr – mrcarter7