2012-11-05 62 views
13

我想用jQuery $.ajax發送JavaScript數組到servlet。

var json=[1,2,3,4]; 
$.ajax({ 
      url:"myUrl", 
      type:"POST", 
      dataType:'json', 
      success:function(data){ 
       // codes.... 
      }, 
      data:json 

     }); 

當我使用

request.getParameter("json"); 
request.getParameterValues("json"); 

返回null。

如何訪問值?

+1

數據是一個JSON對象,所以它必須像數據:{名稱值對,其中值可以是一個對象} –

+1

我沒有看到任何地方你定義了一個名爲_json_的參數,所以我不知道你爲什麼期望_getParameter(「json」)_返回除null以外的任何東西。 – jahroy

+0

你想發佈到服務器端文件嗎?例如將數據存儲在數據庫中? – 2012-11-05 22:59:33

回答

30

發送數組作爲JS對象的值,所以最終結果爲{json:[1,2,3,4]}

var json=[1,2,3,4]; 
$.ajax({ 
    url:"myUrl", 
    type:"POST", 
    dataType:'json', 
    data: {json:json}, 
    success:function(data){ 
     // codes.... 
    }, 
}); 

在servlet中,需要後綴請求參數名稱爲[]

String[] myJsonData = request.getParameterValues("json[]"); 

jQuery追加它們以便像PHP一樣對weak typed languages友好。

+0

我在servlet端做什麼? – IbrahimAsad

+0

嘗試使用request.getParameterValues('json') –

+1

在服務器端犯了一個錯誤,您可能不得不使用。 –

-1

您需要發佈您的JavaScript數據對象這樣的..

http://api.jquery.com/jQuery.post/

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data) { 
    alert("Data Loaded: " + data); 
    }); 
0

你有你的數組轉換成JSON類型,以便代替它需要讀取[]

var array = [ 1, 2, 3, 4 ]; 

要做到這一點您需要致電

var json = JSON.stringify(array) 

那麼你可以把它傳遞到你的Ajax調用

$.ajax({ url:"myUrl", 
      type:"POST", 
      data: json, 
      dataType:'json', 
      success:function(data){ 
      // codes.... 
      }}) 
+0

我在servlet方面做了什麼? – IbrahimAsad

相關問題