php - 您好尝试构建注册页面但没有成功(网络错误),反应本机和 mysql
问题描述
我试图建立一个注册页面,但是在单击“注册”按钮时没有任何反应,出现此错误:
[12:54:39] Network Error
- node_modules\axios\lib\core\createError.js:15:17 in createError
- node_modules\axios\lib\adapters\xhr.js:81:22 in handleError
- node_modules\event-target-shim\dist\event-target-shim.js:818:20 in EventTarget.prototype.dispatchEvent
- node_modules\react-native\Libraries\Network\XMLHttpRequest.js:600:10 in setReadyState
- node_modules\react-native\Libraries\Network\XMLHttpRequest.js:395:6 in __didCompleteResponse
- node_modules\react-native\Libraries\vendor\emitter\EventEmitter.js:189:10 in emit
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:416:4 in __callFunction
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:109:6 in __guard$argument_0
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:364:10 in __guard
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:108:4 in callFunctionReturnFlushedQueue
* [native code]:null in callFunctionReturnFlushedQueue
我见过类似的问题,但他们的解决方案对我不起作用。
尝试将 localhost 更改为 IP,尝试将行添加到 AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
....
android:usesCleartextTraffic="true"
但没有任何帮助,我很沮丧,无法弄清楚我的问题。
反应代码:
import React,{useEffect,useState} from "react";
import {View,TextInput,Text,StyleSheet,Button} from "react-native";
import axios from "axios";
const RegistrationScreen = () => {
const [username,setUsername]=useState("");
const [email,setEmail]=useState("");
const [password,setPassword]=useState("");
const [isSubmit,setIsSubmit]=useState(false);
useEffect(()=> {
const authenticate = async() => {
axios.post(
"http://10.0.0.8:8080/project/register.php",
JSON.stringify({
email: email,
password: password,
username: username,
})
)
.then((response) => {
console.log(response);
setIsSubmit(false);
})
.catch( (err) => {console.log(err);
});
};
if (isSubmit) authenticate();
},[isSubmit]);
return (
<View style={styles.container}>
<TextInput
placeholder="Username"
style={styles.input}
autoCapitalize="none"
onChangeText={(text)=>setUsername(text)}
/>
<TextInput
placeholder="Password"
style={styles.input}
autoCapitalize="none"
onChangeText={(text)=>setPassword(text)}
secureTextEntry= {true}
/>
<TextInput
placeholder="Email"
onChangeText={(text)=>setUsername(text)}
style={styles.input}
/>
<Text>{username}</Text>
<View style={styles.buttonContainer}>
<Button title="Register" onPress={() => setIsSubmit(true) }/>
</View>
</View>
);
};
const styles=StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center",
},
input: {
paddingVertical: 5,
borderBottomColor: "#ccc",
borderBottomWidth: 1,
width: "55%",
},
buttonContainer: {
marginTop: 20,
},
});
export default RegistrationScreen;
php代码:
<?php
$conn = mysqli_connect('localhost', 'root', '','project_db');
$json=file_get_contents('php://input'); // Takes raw data from the request
echo $json;
$obj=json_decode($json,true); // Converts it into a PHP object
$username=$obj['username'];
$password=$obj['password'];
$email=$obj['email'];
echo $username;
echo "hello";
$query="SELECT * from users where email = '{$email}'";
$query_output=mysqli_query($conn,$query) or die ("Query faild: ".mysqli_error($conn));
$count=mysqli_num_rows($query_output);
if($count==1) {
$arr=array("result"=>"email already present");
echo json_encode($arr);
} elseif($count==0) {
$query1="INSERT INTO `users` (`email`,`password`,`username`) VALUES ('{$email}','{$password}','{$username}')";
$query_output=mysqli_query($conn,$query1) or die ("Query faild: ".mysqli_error($conn));;
$arr=array('result'=>'ok');
echo json_encode($arr);
} else {
$arr=array('result'=>'fail');
echo json_encode($arr);
}
?>
请帮助某人?
解决方案
推荐阅读
- flutter - 广告在应用程序的旧版本中显示,但在最近的版本中不显示
- django - 如何过滤 Django 查询的连接表,然后在一个查询中迭代连接表?
- php - 基于字段执行不同的mysql选择
- javascript - 如何始终在整页中显示 React 应用程序?
- java - 使用jcalender时,我无法通过MySQL从Java应用程序中搜索日期?
- python - 如何解决“未解决的导入 discord.ext.tasks”?
- bitmap - CameraX 预览查看截图
- python - 优化大熊猫数据框中的计数值
- vue.js - 自定义 NPM 包安装问题
- c++ - 将复数向量展平并还原为双向量并返回