我很難找出這個問題。似乎不管我嘗試什麼,PHP總是返回一個空數組。這是我的主文件(的index.php)的代碼:「鏈接」來自PHP服務器的JSON數據響應是空的
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$(".ajaxlink").click(function() {
callServer();
return false; //Stop link from redirecting
});
});
var test = { "testName": "testValue" }
var testJSON = JSON.stringify(test);
function updatePage(data) {
document.getElementById("testDiv").innerHTML = data;
}
function callServer() {
$.ajax({
type: "POST",
url: "ajax/server.php",
data: testJSON,
success: function(data) {
updatePage(data);
},
//Upon error, output message containing a little info on what went wrong
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('An Ajax error occured\ntextStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown + '\nstatus = ' + XMLHttpRequest.status);
}
});
}
</script>
<div id="testDiv">Something here</div>
<a href="test1.htm" class="ajaxlink">Link!</a> <br>
這基本上運行當您單擊的callServer()函數。然後它將測試json數據,即{「testName」:「testValue」}發送到server.php。 Firebug報告說json數據確實發送到了server.php。
我server.php看起來是這樣的:
<?php
print_r($_POST);
?>
這將返回在testDiv如下:
Array
(
)
在阿賈克斯功能的數據類型是沒有定義,所以無論輸出服務器.php文件吐出來,應該是可讀的。所有必需的庫(json,jquery)也包含在我的文檔中。我在Apache 2.2和PHP 5.3.1上運行它,但是它在我的web服務器(它是成千上萬個網站的主機)上顯示了相同的結果。請求頭中使用的內容類型是'application/x-www-form-urlencoded; charset = UTF-8',以便應該正常工作。
謝謝你的時間。 致以問候 soren
在這裏同意......你不需要stringify。只需將數據作爲JSON發送即可。將該測試變量作爲數據而不是testJSON。 – Lindsay 2010-02-25 17:29:33
Firebug說即時發送正確的JSON數據。我的js中的'測試'也是一個對象。 – 2010-02-25 17:30:03
經過進一步測試,這工作!!!!!非常感謝您 – 2010-02-25 17:32:36