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
});