試圖將一些數據輸入到服務器,但我的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來解釋問題嗎?
發佈您的Java代碼創建JSON對象 –
添加了Android代碼。 :) –
發佈代碼時,只發布相關的內容。你的'import'語句,所有'View'初始化等都不是很相關。 –