首页 > 解决方案 > 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();

?>

标签: phpreact-native

解决方案


您可能缺少在您的 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。


推荐阅读