1

私はjsonパーサーエラーに直面していますが、原因がわかりません。エラーがポップアップするだけで、データがデータベースに更新されないことがあるためです。データはphpファイルに投稿され、暗号化されてデータベースに更新されます。データをデータベースに挿入できる場合もあれば、挿入できない場合は、json 解析エラーが表示されます。

これは私のエラーです:

08-31 01:10:55.598: E/JSON Parser(360): Error parsing data org.json.JSONException: End of input at character 0 of 

これは私のコードです:

String email = db.getEmail();
            String currentPassword = cpCurrentPassword.getText().toString();
            String newPassword = cpNewPassword.getText().toString();

                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("email", email));
                        params.add(new BasicNameValuePair(
                                "currentpassword", currentPassword));
                        params.add(new BasicNameValuePair("newpassword",
                                newPassword));
                                JSONObject json = jsonParser
                                        .makeHttpRequest(
                                                newpassword_url, "POST",
                                                params);

                                try {
                                    int success1 = json1
                                            .getInt(TAG_SUCCESS);
                                    if (success1 == 1) {    
                                        showToast("Password successfully changed!");

これは私のPHPです:

<?php
// array for JSON response
$response = array();

// check for required fields
if (isset($_POST['email']) && isset($_POST['newpassword'])){
$email = $_POST['email'];
$newpassword = $_POST['newpassword'];
}
// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();

$result = mysql_query("UPDATE users SET encrypted_password = '$newpassword' WHERE email = '$email'");

// check if row inserted or not
if ($result) {
// successfully updated
$response["success"] = 1;
$response["message"] = "Password successfully changed";

// echoing JSON response
echo json_encode($response);
}
?>

データがデータベースに更新されていない場合でも、私の成功タグはまだ応答 1 です。これは私が理解できないところです。

4

1 に答える 1

2

パラメータの名前を変更してみてください。

// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("currentpassword", currentPassword));
params.add(new BasicNameValuePair("newpassword", newPassword));

これとともに

// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email1", email));
params.add(new BasicNameValuePair("currentpassword1", currentPassword));
params.add(new BasicNameValuePair("newpassword1", newPassword));

また、phpコードで変更します

$email = $_POST['email1'];
$newpassword = $_POST['newpassword1'];

これが機能するかどうか見てみましょう

于 2014-08-17T14:59:24.127 に答える