آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خطای عجیب در گرفتن json

Amin  8 سال پیش  8 سال پیش
0 0

سلام
من در سرچ برنامم به مشکل خوردم
طرز کار هم اینطوریه که کاربر نام رو مینویسه و دسته بندی رو انتخاب میکنه و جستجو رو میزنه


حالا با استفاده از کتابخانه volley درخواستی به سمت سرور میفرسته و درخواست رو پردازش میکنه و مقادیر رو برمیگردونه
مشکل من اینه که مقادیر برگشتی به شکلی نامفهوم هستن

کد اندروید:

public class AppSearchList extends AppCompatActivity {

private ListView Applist;
private AdapterApp adapterApp;
private ArrayList<StructApp> apps=new ArrayList<StructApp>();
private ProgressDialog pDialog;

private String Name;
private int CategoryId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_search_list);

Bundle extras=getIntent().getExtras();
try{
Name=extras.getString("SEARCH_NAME");
CategoryId=extras.getInt("SEARCH_CATEGORY");
}catch (Exception e)
{
e.printStackTrace();
}

//set listview
Applist=(ListView) findViewById(R.id.AppSearchlist);
adapterApp=new AdapterApp(this,apps);
Applist.setAdapter(adapterApp);

pDialog = new ProgressDialog(this);
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();

// Creating volley request obj
StringRequest appsearchRequest = new StringRequest(Request.Method.POST, GlobalVariables.readSearchUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Log.i("read from json",s);
/*
try {
JSONArray array = new JSONArray(s);
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
StructApp app = new StructApp();
app.setName(obj.getString("APP_NAME"));
app.setCost(obj.getInt("APP_PRICE"));
app.setIconUrl(obj.getString("APP_ICON"));
app.setRatingValue((float) obj.getDouble("APP_VOTE"));

apps.add(app);
}

hidePDialog();

adapterApp.notifyDataSetChanged();

} catch (JSONException e)
e.printStackTrace();
hidePDialog();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Dismissing the progress dialog
hidePDialog();
//Showing toast
Toast.makeText(G.context, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {

Map<String, String> searchParam = new HashMap<String, String>();
searchParam.put("AppFilter","app.APP_NAME=" +"\"" +Name+"\"");
searchParam.put("CategoryFilter","app.CAT_ID=" +"\"" +CategoryId+"\"");

return searchParam;
}
};

// Adding request to request queue
G.getInstance().addToRequestQueue(appsearchRequest);



@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}
private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}
}

کد php :

function readSearch()
{
    $coonection=connectToDatabase();
    $result=mysqli_query($coonection, "SELECT app.APP_NAME,app.APP_ICON,app.APP_VOTE,app.APP_PRICE FROM app INNER JOIN category ON app.CAT_ID = category.CAT_ID WHERE" . $_REQUEST['AppFilter'] . "AND" . $_REQUEST['CategoryFilter']);
    $output=array();
    if(isset($result)){
         while($row=mysqli_fetch_array($result))
    {
        $record=array();
        $record['APP_NAME']=$row['APP_NAME'];
        $record['APP_ICON']=$row['APP_ICON'];
        $record['APP_VOTE']=$row['APP_VOTE'];
        $record['APP_PRICE']=$row['APP_PRICE'];
      
        $output[]=$record;
    }
    echo json_encode($output);
    mysqli_close($coonection);
    }
}

این هم از logcat :

این پروژه دانشگاهم هست.ممنون میشم کمکم کنید

+1 0
با توجه log ی گذاشتید خروجی تون درست نیست یعنی اصلا json ی درکار نیست، بهتره اول از کارکرد وب سرویس با تست کردن در مرورگر و افزونه هایی مثل postman مطمئن بشید بعد تو پروژه استفاده کنید. (8 سال پیش)
0 0
خیلی ممنون از راهنماییتون آقای نصرتی.علت خروجی صحیح نگرفتن رو فهمیدم اما من باید از سمت اندروید 2 پارمتر ارسال کنم تا کوئری کامل بشه!یعنی نحوه ارسال پارمتر ها اشتباهه؟نحوه صحیحش رو توضیح می دید؟لطف میکنید اگر پاسخ بدید (8 سال پیش)
0 0
اینجوری معلوم نمیشه کد های کامل پی اچ پی تون و آدرس فایل رو بفرستدی (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Amin  8 سال پیش
0 0

یکسری تغییرات تو کدها دادم که اون ارور رو از بین برد ولی همچنان مقدار جیسون خالیه

searchParam.put("appfilter", "\"" + Name + "\"");
Log.i("LOG", "\"" + Name + "\"");
searchParam.put("catidfilter", "\"" + CategoryId + "\"");
Log.i("LOG", "\"" + CategoryId + "\"");
I/LOG﹕ "instagram"
I/LOG﹕ "2"
I/read from json﹕ []

کد php :

function readSearch()
{
    $coonection=connectToDatabase();
    //$_REQUEST['appfilter']="instagram";
    //$_REQUEST['catidfilter']="2";
    $result=mysqli_query($coonection, "SELECT app.APP_NAME,app.APP_ICON,app.APP_VOTE,app.APP_PRICE
FROM app INNER JOIN category ON app.CAT_ID = category.CAT_ID WHERE
app.APP_NAME= '" . $_REQUEST['appfilter'] . "' AND app.CAT_ID=" . $_REQUEST['catidfilter']); $output=array(); if(isset($result)){ while($row=mysqli_fetch_array($result)) { $record=array(); $record['APP_NAME']=$row['APP_NAME']; $record['APP_ICON']=$row['APP_ICON']; $record['APP_VOTE']=$row['APP_VOTE']; $record['APP_PRICE']=$row['APP_PRICE']; $output[]=$record; } echo json_encode($output); mysqli_close($coonection); } }

این رو هم بگم وقتی کامنت های کد بالا رو (علامت //) برمیدارم جیسون صحیح بهم میده :

[{"APP_NAME":"Instagram","APP_ICON":"http:\/\/192.168.1.36\/AppStore-server\/Icon\/instagram.png","APP_VOTE":"3.7","APP_PRICE":"0"}]

0 0
دوستان یه راهنمایی نمیکنید؟! (8 سال پیش)
0 0
شما باید خط به خط از صحت کدهاتون مطمئن بشید، POST_$ رو با تابع print_r چاپ کنید ببینید اصلا مواردی که ارسال میکنید به صفحه ارسال میشن یا نه. (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .