![](/img/trans.png)
[英]Flutter Unhandled Exception: FormatException: Unexpected character (at character 4)
[英]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,這意味着data
是Map<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.