1

JSONを使用して、リモートサーバーで実行しているPHPスクリプトと通信しています。アプリケーションはスクリプトを呼び出し、データを送信します。

私はJSONの経験があまりなく、何か間違ったことをしているようで、それが何であるかを見つけることができません。

googleとstackoverflowで問題を見つけようとしましたが、JSONの経験がないため、問題が何であるかがわかりません。

ここに行きます:

ループで、配列にプッシュされている一時リストを生成しています。

    
    var tmpData = {
       rowType:row.rowType、
       isChecked:row.isChecked、
       位置:i
    };

    resultArr.push(tmpData);

これresultArrにより、次のようになります。

{{
        isChecked = 1;
        位置=0;
        rowType = phone;
    }、
        {{
        isChecked = 1;
        位置=1;
        rowType=携帯電話;
    }、
        {{
        isChecked = 1;
        位置=2;
        rowType = email;
    }、
        {{
        isChecked = 0;
        位置=3;
        rowType = sms;
    }

上記はリモートphpスクリプトに送信されています:

xhr.send({data:JSON.stringify(resultArr)});

PHPでの結果:

[データ]=>[
{\" rowType \ ":\" type1 \ "、\" isChecked \ ":true、\" position \ ":0}、
{\" rowType \ ":\" type2 \ "、\" isChecked \ ":true、\" position \ ":1}、
{\" rowType \ ":\" type3 \ "、\" isChecked \ ":true、\" position \ ":2}、
{\" rowType \ ":\" type4 \ "、\" isChecked \ ":false、\" position \ ":3}]

PHPスクリプトでは、データベースに保存するためにこのデータが必要です。ただしjson_decode$_POST["data"]または$_POSTの結果は空です。

だから私の質問、私は何が間違っているのですか?

4

1 に答える 1

1

$ _POST ['data']-変数からわかるように、引用符はエスケープされます(このように\")。

正しくデコードするには、実行stripslashesする必要があります。$_POST['data']試してみたところ、最終的なコードは次のようになりました。

$json = '[
{\"rowType\":\"type1\",\"isChecked\":true,\"position\":0},
{\"rowType\":\"type2\",\"isChecked\":true,\"position\":1},
{\"rowType\":\"type3\",\"isChecked\":true,\"position\":2},
{\"rowType\":\"type4\",\"isChecked\":false,\"position\":3}]';

$decoded = json_decode( stripslashes($json) ) ;
于 2013-01-02T10:42:43.670 に答える