0

json文字列をプレーン文字列としてアクションに投稿し、gsonを使用して文字列をリストに変換したいのですが、文字列はjquery / webworkによってjsonオブジェクトとして扱われます、jquery 1.43 + webwork + gsonを使用しています、jqueryはありませんjsonプラグインか何か。

ここにアクションがあります:

public class ImageAction extends BaseAction {

    private String pks;

    public void setPks(String pks) {
        this.pks = pks;
        Gson gson=new Gson();
        List<Map> list=gson.fromJson(pks,new TypeToken<List<Map<String,String>>>(){}.getType());
        System.out.println(list.size());
    }

    ......
}

jqueryコード:

j$.ajax({
            url:approveUrl,
            data: {pks:'[{"userName":"theoffspring"}]'},
//            dataType:'json',
            type:'post',
//            traditional: true,
            success:function (response) {
                hideProgressBar(parent.document)
                if (response.result==false){
                    alert(response.msg);
                    return;
                }

//                document.location.reload();
            }

        })

jsonオブジェクトではなく共通の文字列としてpksを投稿したい。しかし、jqueryコードを呼び出すと、setPksメソッドが呼び出されないことがわかりました。とても奇妙。

4

2 に答える 2

0

これを見てください:http://jsfiddle.net/flocsy/vuGL9/

pksが実際には希望どおりに文字列として送信されていることがわかりますが、文字列(pks2)として送信されていない場合は、外観が異なります。

PS:ブラウザに応じて、firebugの[ネットワーク]タブを確認するか、要素を検査してください。

pks: '[{"userName":"theoffspring"}]'

pks2[0][userName2]:'hehe'

したがって、おそらくサーバー側は魔法をかけます...

于 2012-05-31T07:03:26.833 に答える
0

JSON.stringify()を使用してクライアントでajax.serializeを介して送信するデータをシリアル化していない場合、送信すると単一の文字列に変換されます。

コードを次のように変更します。

$.ajax({
            url:approveUrl,
            data:JSON.stringify(yourdata),
//            dataType:'json',
            type:'post',
//            traditional: true,
            success:function (response) {
                hideProgressBar(parent.document)
                if (response.result==false){
                    alert(response.msg);
                    return;
                }

//                document.location.reload();
            }

        })

これはうまくいくかもしれません。

于 2012-05-31T07:24:13.493 に答える