首先讓我說,我從來沒有使用過JSON或AJAX,但我認爲我至少理解了這個概念。成功將json_encode的變量從PHP傳遞到外部.js文件?
我只是想將一些PHP值傳遞給jquery函數(位於外部.js文件中)。我嘗試了所有我可能想到的,並且不知道這裏發生了什麼問題。
在index.php文件,我有:
<?php
$data = array(1 => 'thisor', 2 => 'thatttt');
echo json_encode($data);
?>
..這顯然不是我想通過真實的數據,但它只是用於測試。 在我的js文件我具備的功能:
$.getJSON("index.php", function(data){
alert('data loaded' + data);
})
.error(function() { alert("error"); });
每一次,它拋出的錯誤。不過,我注意到如果我使用$ .post後面跟着相同的確切代碼,它不會再拋出錯誤,並返回數據。
此外,是否有必要'回聲'json_encode?如果我不希望這些信息顯示在我的網頁上怎麼辦?或者..我可能在這裏誤解了一些東西。另外x2,如果值得注意,我讀了'header('Content-type:application/json');'這可能需要進入PHP文件..但是當我這樣做時,它不再呈現瀏覽器中的網頁,而是以純文本格式輸出內容。我需要在其他地方做這個/做另一個外部PHP文件?
對於任何荒謬問題的道歉,這真的是我第一天想學這個東西。
你可以使用'$ .post'和使用'JSON.parse(數據)'來獲得JSON對象。此外,我會建議分開的PHP和HTML到不同的文件。因此,您可以使用'getJson.php'來發送json和'index.php',它只包含'html'和javascript以發送請求。 – 2013-03-07 00:22:59
打印的唯一東西應該是JSON數據。你不應該把它和你的主頁的內容混雜在一起(getJSON()'知道怎麼讀?)。 – kapa 2013-03-07 00:25:46
是的,你需要'echo json_encode(...)'。當你使用AJAX時,腳本的輸出被AJAX回調函數讀取,它不會顯示在網頁上(除非回調函數顯示它)。 – Barmar 2013-03-07 00:38:46