0

クライアントサイドに次の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は機能します。サーバーサイドの問題である可能性がありますか?!

4

2 に答える 2

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
        });
于 2012-10-15T20:17:25.430 に答える
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'];
于 2012-11-01T01:33:04.827 に答える