0
我使用凌空抽取Json數據,但它似乎不工作。該代碼完全適合我。 的Android代碼:Android Volley Json數據不收集
public void search() {
final String search_string = et_Search.getText().toString();
PD.setMessage("Searching: " + search_string);
PD.show();
String search_url = "";
StringRequest postRequest = new StringRequest(Request.Method.POST, search_url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
int success = jsonResponse.getInt("success");
String message = jsonResponse.getString("message");
JSONArray ja = jsonResponse.getJSONArray("restaurants");
if (ja != null) {
for (int i = 0; i < ja.length(); i++) {
JSONObject jsonobject = ja.getJSONObject(i);
HashMap<String, String> item = new HashMap<String, String>();
item.put(TITLE, jsonobject.getString(TITLE));
item.put(LOCATION, jsonobject.getString(LOCATION));
List.add(item);
} // for loop ends
String[] from = {TITLE, LOCATION};
int[] to = {R.id.item_name, R.id.item_location};
adapter = new SimpleAdapter(
getActivity().getApplicationContext(), List,
R.layout.list_items, from, to);
listView.setAdapter(adapter);
}else{
Toast.makeText(getActivity().getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
PD.dismiss();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
PD.dismiss();
Toast.makeText(getActivity().getApplicationContext(),
"Failed, Check Your Connection", Toast.LENGTH_SHORT).show();
}
}
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
// the POST parameters:
params.put("search_string", search_string);
return params;
}
};
// Adding request to request queue
Volley.newRequestQueue(getActivity()).add(postRequest);
}
所以現在是服務器端代碼:它從MySQL獲取數據,JSON編碼完全正常工作......
$search_string = $_POST["search_string"];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// get all restaurants from products table
$result = mysql_query("SELECT T1.name, T2.address FROM tbl_restaurant T1 INNER JOIN tbl_information T2 ON T1.restaurant_id = T2.restaurant_id WHERE T1.name LIKE '%$search_string%'") or die(mysql_error());
// check for empty result
if (mysql_num_rows($result) > 0) {
// looping through all results
// restaurants node
$response["restaurants"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$rest_array = array();
$rest_array["name"] = $row["name"];
$rest_array["address"] = $row["address"];
// push single restaurant into final response array
array_push($response["restaurants"], $rest_array);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
對不起,它是一種Post方法,我編輯了這個。 – mhtamun
我編輯了我的答案。那麼你應該把參數改爲POST。 –
不,它不工作。它沒有獲取json數組。 – mhtamun