2012-05-31 30 views
0

我想JSON字符串作爲純字符串張貼到一個動作,然後轉換成字符串中使用GSON列出,但仍字符串作爲的jQuery/webwork的JSON對象處理,我使用jQuery 1.43 + webwork的+ GSON,沒有jQuery的json插件什麼的。json字符串不能通過jquery ajax發佈爲純字符串?

這裏是動作:

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方法不會被調用。這麼奇怪。

回答

0

你have'nt序列化的數據,你通過它ajax.serialize在客戶透過JSON.stringify發送()和send它將被轉換爲單個字符串。

修改代碼以:

$.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(); 
      } 

     }) 

這可能工作。

+0

奇怪的是,我首先使用它,它沒有工作,它重新啓動計算機後,它似乎是它的緩存問題。如果它仍然無法正常工作,你可以下載json2.js應該使它。但是你還需要使用gson將json字符串轉換爲您喜歡的任何類型。 – user1231111

0

看一看這樣的:http://jsfiddle.net/flocsy/vuGL9/

你會看到,只要你想它的PKS實際上是發送一個字符串,當它不被作爲一個字符串(pks2)它會看起來不同。

PS:看網絡選項卡中螢火或檢查元件,這取決於你的瀏覽器:

PKS: '[{ 「的userName」: 「後裔樂團」}]'

pks2 [0] [ USERNAME2]:「嘿嘿」

所以也許您的服務器端做一些magick ...

+0

是的,我猜服務器端必須把它當作josn對象,而不是常見的字符串,但是解決方案是什麼? – user1231111

+0

我不知道這個BaseAction是什麼,但你爲什麼認爲setPks應該被自動調用? – Gavriel