MooTools:JSON.encode和Request.JSON没有显示POST数据

时间:2012-10-15 19:01:57

标签: json post mootools

我的客户端中有以下Request.JSON(请注意使用MooTools自己的JSON解析器转换为JSON字符串):

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数据。 GET有效。可能是服务器端问题?!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

以下应该工作。

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'];