Мне трудно понять это. Кажется, что независимо от того, что я пытаюсь, PHP всегда заканчивает тем, что возвращает пустой массив. Вот код моего основного файла (index.php):
<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
(
)
Тип данных в функции .ajax не определен, поэтому независимо от того, что выводится из файла server.php, он должен быть читаемым. Все необходимые библиотеки (json, jquery) также включены в мой документ. Я запускаю это на Apache 2.2 и PHP 5.3.1, но это показывает то же самое на моем веб-сервере (который является хостом для тысяч веб-сайтов). Тип содержимого, используемый в заголовке запроса: application / x-www-form-urlencoded; charset = UTF-8 ', чтобы он работал правильно.
Спасибо за ваше время.
С наилучшими пожеланиями
Сорен