2013-09-30 23 views
3

我試圖將ArrayList發送給PHP($ _POST)並將其用作數組。 我使用Android異步HTTP客戶端http://loopj.com/android-async-http/使用Android異步Http客戶端將ArrayList傳遞給PHP問題

我的代碼

ArrayList<String> array = new ArrayList<String>(); 
array.add("1"); 
array.add("2"); 
array.add("3"); 
RequestParams params = new RequestParams(); 
params.put("descr_array", array); 
AsyncHttpClient client = new AsyncHttpClient(); 
client.post(StaticValues.SERVER_PAGE, params, new AsyncHttpResponseHandler() { ... } 

在PHP

$descrarray[] = $_POST['descr_array']; 

顯示只有一個項目,作爲一個字符串。

$result = print_r($_POST); 
print(json_encode($result)); 

調試代碼顯示

陣列([descr_array] => 1)

只有一個字符串,如何解決呢?

+1

使用JSON獲得在PHP中的值。 – Yugesh

+0

將您的字段命名爲「descr_array []'而不是'desc_array'。額外的'[]'是PHP的一個信號,將多個相同的輸入名稱視爲一個數組,而不是僅使用最後一個值。 –

回答

3

如果你想獲得的所有值寫:

RequestParams params = new RequestParams(); 
params.put("descr_array_1", array.get(0)); 
params.put("descr_array_2", array.get(1)); 
params.put("descr_array_2", array.get(2)); 

但我更喜歡你使用Gson到數組轉換爲字符串,並且只使用一對:

Gson gson = new Gson(); 
String out = gson.toJson(array); 
params.put("descr_array", out); 
+0

謝謝,解決了這個問題 – A7madev

1

這是什麼工作me:

RequestParams params = new RequestParams(); 

for (String val : array) { 
    params.add("descr_array[]", val); 
} 

它不需要您添加額外的標題或導入其他庫並且爲JSONXML工作。


這裏要注意的重要一點是利用add代替putSee the difference between the two

0

這個工作對我來說...

Map<String, String> aMap = new HashMap<String, String>(); 
aMap.put("f_name" ,""); 
aMap.put("l_name" ,""); 
aMap.put("email" ,edtEmail.getText().toString()); 
RequestParams params = new RequestParams(); 
params.put("user",aMap); 

AsyncHttpClient client = new AsyncHttpClient(); 
client.post(url, params, n..... 
相關問題