簡體   English   中英

未處理的異常:FormatException:意外字符(在字符 1 處)E/flutter(6084):<br /> E/顫振(6084):^

[英]Unhandled Exception: FormatException: Unexpected character (at character 1) E/flutter ( 6084): <br /> E/flutter ( 6084): ^

.php 文件:

 $email=$_POST['email'];

    $passworda=$_POST['passworda'];

$sql="SELECT * FROM user WHERE email='".$email."'AND passworda='".$password."' ";
$result=mysqli_query($db,$sql);
$count=mysqli_num_rows($result);
if($count>=1){
echo json_encode("success");
}
else
{
echo json_encode("error");
}

登錄頁面 Flutter:

class Login extends StatelessWidget {
  TextEditingController email = TextEditingController();
  TextEditingController password = TextEditingController();

  Future login(BuildContext cont) async {
    if (email.text == "" || password.text == "") {
      Fluttertoast.showToast(
        msg: "please complete!",
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
        fontSize: 16.0,
      );
    } else {
      var url = "http://192.168.43.150/v1_flutter/lib/php/connection.php";
      var response = await http.post(Uri.parse(url), body: {
        "email": email.text,
        "pass": password.text,
      }, headers: {"Accept":"applicarion/json"});
      var data = jsonDecode(response.body);

      if (data == "success") {
        Navigator.pop(cont);
        Navigator.pushNamed(cont, "/registre");
      } else {
        Fluttertoast.showToast(
          msg: "The user and password does not exist!",
          toastLength: Toast.LENGTH_SHORT,
          gravity: ToastGravity.CENTER,
          fontSize: 16.0,
        );
      }
    }}

安慰:

E/flutter(6084):[錯誤:flutter/lib/ui/ui_dart_state.cc(198)]未處理的異常:FormatException:意外字符(在字符1處)E/flutter(6084):
E/flutter (6084): ^ E/flutter (6084): E/flutter (6084): #0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1383:5) E/flutter (6084): # 1 _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1250:9) E/flutter (6084): #2 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:915:22) E/flutter ( 6084): #3 _parseJson (dart:convert-patch/convert_patch.dart:35:10) E/flutter (6084): #4 JsonDecoder.convert (dart:convert/json.dart:612:36) E/flutter ( 6084): #5 JsonCodec.decode (dart:convert/json.dart:216:41) E/flutter (6084): #6 jsonDecode (dart:convert/json.dart:155:10) E/flutter (6084) : #7 Login.login (package:mes_v1/pages/Authentification/login.dart:25:18) E/flutter (6084): E/flutter (6084):

您的代碼看起來很容易出錯,但關注您的問題:異常看起來很清楚,您的響應解析正在中斷。 (我還要說你應該用 try/catch 包裝你的代碼,以防止任何代碼破壞並正確捕獲問題)。

讓我們解決您的問題:

var data = jsonDecode(response.body);

這會將您的字符串 (response.body) 轉換為 json,這意味着dataMap<String, dynamic>List<dynamic> (其中 dynamic 是 Map 或另一個嵌套列表),因此以下內容毫無意義

if (data == "success") {

現在,讓我們看一下您的 php 代碼:

echo json_encode("success");

我不是 php 專家,但從文檔看起來應該像下面這樣使用它:

$response = array("result" => "Success");
echo json_encode($response);

現在讓我們回到你的飛鏢代碼:

    var success = false;
    try{

      final baseUrl = "http://192.168.43.150"; // Use final wherever you can
      final url = "$baseUrl/v1_flutter/lib/php/connection.php"; // Improving flexibility

      final body = <String, String>{
        "email": email.text,
        "pass": password.text,
      }; // Decouple in variables for readability

      final headers = <String, String>{"Accept":"application/json"}; // Fix typo

      final response = await http.post(Uri.parse(url), body: body, headers: headers);
      final data = jsonDecode(response.body);
      success = data["result"] == "Success";
   } catch(e) {
      print("Catched an error!");
      print(e);
      success = false;
   }

   if(success) {
   ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM