2014-03-29 35 views
0

試圖將一些數據輸入到服務器,但我的JSON似乎沒有工作。該值不會在服務器更新,並在Eclipse控制檯,它返回「`JSON <html>錯誤

錯誤解析數據org.json.JSONException: 類型的值java.lang.String中不能被轉換爲JSONObject的

它似乎是不輸入數據,但試圖直接從代碼,這是html,而不是我想要的"success":1讀取。當我從網絡瀏覽器,它工作正常,這說明這是一個JSON問題。

這裏是PHP代碼:

<html> 
<head> 
<title>Time Update</title> 
</head> 
<body> 

<?php 
if(!empty($_POST)) 
{ 
$dbhost = 'localhost'; 


$dbuser = 'casaange_testapp'; 
$dbpass = 'testapp1'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('casaange_volunteertest'); 
$email= $_POST['email']; 
$time= $_POST['time']; 

$sql = "UPDATE users SET time= '$time' WHERE email = '$email'"; 



$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not update data: ' . mysql_error()); 
} 

if($retval){ 
$response["success"] = 1; 
$response["message"] = "Update successful!"; 
die(json_encode($response)); 
} 

//echo '{"success":1, "message":"Time added!"}'; 
mysql_close($conn); 
} 
else 
{ 
?> 
<form method="post" action="<?php $_PHP_SELF ?>"> 
<table width="400" border="0" cellspacing="1" cellpadding="2"> 
<tr> 
<td width="100">Email:</td> 
<td><input name="email" type="text" id="email"></td> 
</tr> 
<tr> 
<td width="100">Time:</td> 
<td><input name="time" type="text" id="time"></td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> 
<input name="update" type="submit" id="update" value="Update"> 
</td> 
</tr> 
</table> 
</form> 
<?php 
} 
?> 
</body> 
</html> 

Java代碼:

class AttemptLogin extends AsyncTask < String, String, String > { 
    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    boolean failure = false;@Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(Info.this); 
     pDialog.setMessage("Updating..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    }@Override 
    protected String doInBackground(String...args) { 
     // TODO Auto-generated method stub 
     // Check for success tag 
     int success; 
     //    String userName; 
     //    String userEmail; 
     //    double userTime; 
     //    String userSchool; 
     //String time = Double.parseDouble(TotalHours.toString()); 
     //    double HoursValue = 0; 
     //    double MinuteValue = 0; 
     //    double TotalTime; 
     //    String TotalTimeString; 
     //   try{ 
     //    HoursValue = Double.parseDouble(HoursEditText.getText().toString()); 
     //   }catch(NumberFormatException e){ 
     //    HoursEditText.setText("0"); 
     //   }try{ 
     //    MinuteValue = Double.parseDouble(MinutesEditText.getText().toString()); 
     //   }catch(NumberFormatException e){ 
     //    MinutesEditText.setText("0"); 
     //   }  
     //    
     //    TotalTime = (HoursValue + (MinuteValue/60)) + Global.userTime; 
     //    System.out.println(TotalTime); 
     //    TotalTimeString = String.valueOf(TotalTime); 
     //    
     //  TotalTimeString = null; 
     try { 
      // Building Parameters 
      List <NameValuePair> params = new ArrayList <NameValuePair>(); 
      params.add(new BasicNameValuePair("email", Global.userEmail)); 
      params.add(new BasicNameValuePair("time", TotalTimeString)); 
      //Parameters for Update 
      //     List<NameValuePair> paramsUpdate = new ArrayList<NameValuePair>(); 
      //     paramsUpdate.add(new BasicNameValuePair("email", Global.userEmail)); 
      //  params.add(new BasicNameValuePair("password", password)); 
      Log.d("request!", "starting"); 
      // getting product details by making HTTP request 
      JSONObject json = jsonParser.makeHttpRequest(
      TIME_URL, "POST", params); 
      // check your log for json response 
      Log.d("Login attempt", json.toString()); 
      // json success tag 
      success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       Log.d("Updated! Now gathering info for refresh!", json.toString()); 
       //      JSONObject jsonRefresh = jsonParser.makeHttpRequest(
       //        UPDATE_URL, "POST", paramsUpdate); 
       //      if(success == 2){ 
       //       Global.userTime = jsonRefresh.getDouble(TAG_TIME); 
       //       System.out.println(Global.userTime); 
       //       Log.d("Update Successful!", jsonRefresh.toString()); 
       //      } 
       // Intent i = new Intent(Info.this, Info.class); 
       finish(); 
       // startActivity(i); 
       return json.getString(TAG_MESSAGE); 
      } else { 
       Log.d("Login Failure!", json.getString(TAG_MESSAGE)); 
       return json.getString(TAG_MESSAGE); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once product deleted 
     pDialog.dismiss(); 
     if (file_url != null) { 
      Toast.makeText(Info.this, file_url, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
} 

很抱歉的混亂,打算把它清理乾淨,當它工作..;)

編輯: 現在更新數據庫,但它仍然無法讀取回報。之前有人提到PHP正在返回html ..數據庫問題只是將一行移到另一個之上。如果這是真的,有人可以用PHP返回HTML來解釋問題嗎?

+0

發佈您的Java代碼創建JSON對象 –

+0

添加了Android代碼。 :) –

+0

發佈代碼時,只發布相關的內容。你的'import'語句,所有'View'初始化等都不是很相關。 –

回答

0

您需要使用JSON.stringify()才能使其正常工作。

+0

正在返回的數據甚至不正確。我相信PHP中的某些錯誤應該返回「成功」:1。 –

+0

此外,當您轉到Web窗體並手動執行操作時,它會打印{「success」:1},但是java代碼不會讀取它。因此,我相信它甚至不會輸入信息進入形式。 –