Необходимо помнить о трех вещах:
Браузер может кэшировать ответ JSON, поэтому рекомендуется добавить метку времени в конец URL-адреса, чтобы сохранить актуальность данных. (Это верно для метода GET, но не обязательно для POST).
Тип содержимого ответа JSON должен быть « application / json » или « text / javascript ».
Функция json_encode
была включена в PHP 5.2, поэтому старые среды могут не иметь возможности ее использовать, и вам придется либо установить модуль, либо написать собственный класс кодирования.
Я делаю некоторую работу на сервере с PHP 5.1.6, и мне не нужно сериализовывать какие-либо сложные типы, поэтому я нашел способ, показанный ниже, чтобы работать нормально Я использую простое «представление JSON», которое устанавливает правильный тип содержимого в заголовке ответа и выдает строку JSON, которая была вручную объединена в контроллере.
Фил, эффекты / анимации jQuery могут использовать возвращенные данные JSON в функции обратного вызова success . В приведенном ниже примере я просто показываю сообщение в окне предупреждения.
Код на стороне клиента:
// the jQuery POST URL includes a time stamp
var now = new Date();
$.ajax({
type: "POST",
url: "page/post/" + now.valueOf().toString(),
data: {},
dataType: "json",
success: function (result) {
alert(result.message);
}
});
Контроллер (/application/controllers/page.php):
class Page extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
}
function post($TimeStamp)
{
/* process request... $Timestamp may or may not be used here. */
$data['json'] = '{"message":"The post was handled successfully."}';
$this->load->view('json_view', $data);
}
}
Просмотр (/application/views/json_view.php):
<?php
$this->output->set_header('Content-Type: application/json; charset=utf-8');
echo $json;
?>