php - php api 不发送任何消息来响应本机应用程序
问题描述
我正在编写一个反应本机代码,其中我通过“Axios fetch 函数”将一些值发布到 PHP API,但我没有得到任何响应。并且我的 PHP 代码是正确的,因为我在浏览器中对其进行了测试,这是我的代码:无论成功还是失败,它都应该返回一些消息(带有消息的数组),但是在反应本机应用程序中,当我提醒它时消息是未定义的。反应本机代码(这是一个由按钮调用的函数,状态具有默认值,并且永远不会为空):
sendRating(){
axios.post("http://192.168.1.107/restaurant/setRate.php", {
rating: this.state.Default_Rating,
ID:this.state.restId
}).then(response => {
if(response.data.message == "success"){
alert("امتیاز شما ثبت شد");
}
else if(response.data.message == "failure"){
alert("لطفا بعدا دوباره تلاش کنید");
}
else{
alert(response.data.message);
}
});
}
这是我的 setRate.php:
<?php
require_once "config.php";
$json=file_get_contents("php://input");
$json = json_decode($json , true);
$Id = $json['ID'];
$rating=$json['rating'];
$sqlQuery="SELECT `rate` , `id` FROM restaurants WHERE `id`=".$Id;
$result=$conn->query($sqlQuery);
if($result->num_rows==1){
$temp=$result->fetch_assoc();
$tempVote=$temp['votes']+1;
$tempRate=(($temp['rate']*$temp['votes'])+$rating)/$tempVote;
$change_rate_query = "UPDATE `restaurants` SET `rate`='$tempRate', `votes`='$tempVote' WHERE `id` = '$Id'";
If ($conn->query($change_rate_query))
$data=array('message' =>"success" );
}
else{
$data=array('message' =>"failure" );
}
echo json_encode($data);
$conn->close();
?>
解决方案
您可能缺少在您的 react-native 代码中的response.data
解析。json
使用 . 将您收到的原始数据转换为 json JSON.parse(response.data)
。
所以你可以sendRating
用这个替换你的方法:
function sendRating() {
axios
.post("http://192.168.1.107/restaurant/setRate.php", {
rating: this.state.Default_Rating,
ID: this.state.restId,
})
.then((response) => {
var jsonResponseData = JSON.parse(response.data);
if (jsonResponseData.message == "success") {
alert("امتیاز شما ثبت شد");
} else if (jsonResponseData.message == "failure") {
alert("لطفا بعدا دوباره تلاش کنید");
} else {
alert(jsonResponseData.message);
}
});
}
注意:在解析之前确保响应不为空,并且数据是有效的 json。
推荐阅读
- sas - 如何修复 SAS EG 中的“物理文件不存在”错误
- django - 为什么 DRF 不翻译荷兰语?
- css - 我在我的 webpack 配置中设置 Autoprefixer 时遇到问题
- python - 在python中使用正则表达式从字符串中提取单独的大写字母
- php - 当我将 mysqli_fetch_assoc 与 HTML 表单一起使用时,它正在发送第一行
- python-3.x - ErrUchIsDown:您的进程因使用过多资源而被杀死
- django - Django中外键的实现
- android - Android 数据绑定:在生成的数据绑定文件中找不到 ...BindingImpl
- c++ - CComSafeArray to Tab-Separated Values 提高速度的建议
- arrays - 使用多个过滤器附加查询字符串