MooTools: JSON.encode и Request.JSON не показывают данные POST

У меня есть следующий Request.JSON на моей стороне клиента (обратите внимание на преобразование в строку JSON с помощью собственного анализатора JSON MooTools):

var data = {action: 'delete', data: { id: item} };
data = JSON.encode(data);

var aRequest = new Request.JSON({
                onSuccess : (function(json) {
                    ...
                }).bind(this),
                onFailure : (function(e) {
                    ...
                }).bind(this),
                onError : (function(text, error) {
                    ...
                }).bind(this),
                url : "../sd_delete.php",
                method : "post",
                data: data,
                urlEncoded: false
            });
    aRequest.setHeader('Content-Type', 'application/json; charset=utf-8');
    aRequest.send();

Теперь на стороне сервера и $_REQUEST, и $_POST являются пустыми массивами. Как получить доступ к строке, которую я отправил с Request.JSON? Или в моем подходе к клиенту есть недостатки?

Спасибо

РЕДАКТИРОВАТЬ: Просто обнаружил, что, даже если я отправляю данные в виде объекта (без JSON.encode), на стороне сервера нет данных POST. ПОЛУЧИТЬ работает. Может быть проблема с сервером?!

2 ответа

Решение

Следующее должно работать.

var data = {action: 'delete', data: { id: item} };

var aRequest = new Request.JSON({
    url : "../sd_delete.php",
    onComplete: function(pResponse) {
        console.log(pResponse);
    }.bind(this)
}).post(data);

Затем вы получите данные поста в php:

echo $_POST['action'];

data Опция должна быть объектом. Пытаться:

        new Request.JSON({
            onSuccess : (function(json) {
                ...
            }).bind(this),
            onFailure : (function(e) {
                ...
            }).bind(this),
            onError : (function(text, error) {
                ...
            }).bind(this),
            url : "../sd_delete.php",
            method : "post",
            data: { anyname: data },
            urlEncoded: false
        });
Другие вопросы по тегам