0

在下拉列表中选择房间并单击获取房间按钮时,我收到了 ERR_CONNECTION_REFUSED。下面是我的代码

在前端

class Dashboard extends Component {
    constructor(props) {
      super(props);
      this.state = {
        roomID: ''
      };
  }

  handleChange = (event) => {    
    this.setState({roomID: event.target.value}); 
  }

  handleSubmit = (event) => {
    console.log('Room chosen is: ' + this.state.roomID);
    event.preventDefault();

    axios.get(`https://localhost:8080/room_selected`)
      .then(function(response){
        console.log(response);
      })
      .catch(function(error){
        console.log(error);
      })
      .then(function(){

      });
  }
render() {
<form>
                <Card
                  plain
                  content={
                    // <div>
                      <FormGroup controlId="formControlsSelect">
      <ControlLabel>Select Room Number</ControlLabel>
      <FormControl componentClass="select" placeholder="select" value={this.state.room} onChange={this.handleChange}>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
      </FormControl>
      <div style={{display: "flex", justifyContent: "center", alignItems: "center"}}>
      <Button onClick={this.handleSubmit} class="btn btn-secondary" justify-content="center">Get Room</Button></div>
    </FormGroup>    
                  }

                />
              </form>
}

在后端

app.get('/room_selected', function (req, res){
    var client = 'a@gmail.com';
    var room = 'Room 1';

    var query = connection.query ('SELECT ClientID FROM clientDevices WHERE DeviceName = ?', [room]);
    if (client == query[0].ClientID){
        res.send('Success');
    } else {
        res.send('The selected room does not have a device attached');      
    }
});
console.log("Listening on port 8080");
app.listen(8080);

有没有办法处理这个错误,也可以让用户从后端接收数据到前端?非常感谢!

4

1 回答 1

0

在你的前端代码中

 axios.get(`https://localhost:8080/room_selected`)

正如我在您的后端代码中看到的那样,它不使用任何 SSL 证书,因此请尝试更改为 HTTP。当他们进行飞行前检查时,您的问题可能来自 CORS 的问题。改成:

axios.get(`http://localhost:8080/room_selected`)
于 2020-10-11T17:09:38.710 回答