簡體   English   中英

反應本機http獲取請求不起作用

[英]React native http fetch request not working

我是本機反應的新手,嘗試使用 fetch 方法(也嘗試過 axios)執行 http 請求。 我使用 PHP 作為后端。 我正在嘗試的是打印從服務器返回的 JSON 對象以響應本機。

我確定響應是從服務器返回的,因為我打印了結果,它是一個 JSON 數組。 但是當我使用 Chrome 開發工具安慰responseData時,我得到了這個[] 我不知道錯誤在哪里。

索引.js

    componentDidMount(){

        fetch('http://xxxxxxxxxx/result.php', {
            method: 'GET',
        }).then(response =>response.json())
          .then((responseData) =>
          {
              console.log(responseData);
              this.setState({
                  user: (responseData.name),
                  loaded:true,
              })

        });         
}
    render(){
        return(
        <Card>  
  <CardTitle style={styles.containerStyle} title={this.state.user} />
</Card>
        );
    }
}

另外我的php腳本如下

結果.php

<?php
include 'db.php';
$check_json = file_get_contents('php://input');

$obj1= json_decode($check_json);
$uid =$obj1->{'uuid'};
$blood = $obj1->{'bloodgroup'};
$loc = $obj1->{'place'};
$prep =$mysqli->prepare("select token,name,uuid from signup where location 
like '".$loc."%' and bloodgroup= ?");
$prep->bind_param("s",$blood);
$prep->execute();
$result= $prep->get_result();
$payload= array();
while($row= $result->fetch_array(MYSQL_ASSOC)){
   $payload[]= array('name' =>$row['name']
                    'uuid' =>$row['name']);
}
$obj2 =json_encode($payload);
echo $obj2;
?>

來自服務器的響應是

 [{"name":"angel","uuid":"b4b8a266-60cf-4e30-a778-596316d1a4a2"}]

嘗試使用 axios。 您可以在此處查看文檔完成npm install axios並將 axios 導入您的組件后,您可以嘗試:

componentDidMount(){
axios
  .get('https://www.your-url.com/path-to-your-php-api')
  .then(({ data })=> {
    this.setState({ 
      user: data.name
    });
  })
  .catch((err)=> {})
}

如果還有問題,把返回 JSON 的 url 貼出來,我看看。

檢查您的 PHP API,如果對象返回空,請確保對 json 進行編碼。 這是您可以嘗試的示例

$myObj->name = "Michel Arteta";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;

你的網址是http嗎? 你試試IOS?

(如果是,您需要將您的域添加到 XCode 的白名單中)

默認情況下,iOS 將阻止任何未使用 SSL 加密的請求。 如果您需要從明文 URL(以 http 開頭的 URL)中獲取,您首先需要添加應用傳輸安全例外。 如果您提前知道需要訪問哪些域,則只為這些域添加例外更安全;

我已經解決了這個問題。問題出在反應部分。我試圖獲取在不同頁面中返回的這個響應。實際上,從服務器返回的響應是正確的。

暫無
暫無

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

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