【发布时间】:2015-11-24 02:10:21
【问题描述】:
我正在使用 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);
【问题讨论】:
-
您能否记录您收到的整个响应并将其粘贴到此处,以检查您收到的 json 格式。