Как получить доступ к параметру запроса, отправленному через форму отправить

#javascript #html #react-native #xmlhttprequest

Вопрос:

Я не могу получить доступ к значениям параметров запроса в методе. в браузере я вижу полный URL-адрес, например http://localhost:3000/form?ssid=useramp;password=acder

но когда я пытаюсь получить доступ к этому с помощью req.url или req.originalUrl, он возвращает только /форму .

PS: Я запускаю этот сервер в react native с помощью https://www.npmjs.com/package/react-native-http-bridge поэтому я здесь даю аналогичную express.js пример. В express js я также не могу получить доступ к параметрам или даже по почте. любая помощь, пожалуйста.

 const express = require('express')
const app = express()
const port = 3000
/*
cannot use these for company reasons
//var bodyParser = require('body-parser')  
//app.use(express.json())
//app.use(express.urlencoded({extended: true}))
//var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
//var urlencodedParser = bodyParser.urlencoded({ extended: false })
*/
app.get('/form', (req, res) => {
    let data = `<!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
body {font-family: Arial, Helvetica, sans-serif;}
* {box-sizing: border-box;}

.form-inline {  
display: flex;
flex-flow: row wrap;
align-items: center;
}

.form-inline label {
margin: 5px 10px 5px 0;
}

.form-inline input {
vertical-align: middle;
margin: 5px 10px 5px 0;
padding: 10px;
background-color: #fff;
border: 1px solid #ddd;
}

.form-inline .sbt { 
padding: 10px 20px;
background-color: #002060;
border: 1px solid #ddd;
color: white;
cursor: pointer;
padding: 10px;
min-height: 50px;
}

.form-inline button:hover {
background-color: #002060;
}

@media (max-width: 800px) {
.form-inline input {
margin: 10px 0;
}

.form-inline {
flex-direction: column;
align-items: stretch;
}
}
</style>
    <script>
    function sendData() {

       //window.location.replace('http://www.w3schools.com:1234/ssid=' ssid.value 'pass=' pass.value);
    }

    </script>
    </head>
    <body>
      <h2><b>Login</b></h2>
      <form class="form-inline"  action="/form1" method="post">
      <label for="ssid">Wi-Fi Name (SSID): </label>
      <input type="text" id="ssid" name="ssid" value=""><br><br>
      <label for="password">Wi-Fi Password: </label>
      <input type="text" id="password" name="password" value=""><br><br>
      <input class="sbt" type="submit" value="Connect">
      </form>
    </body>
    </html>`;

    //Build our response object (you can specify status, mime_type (type), data, and response headers)
    let res1 = {};
    res1.status = "OK";
    res1.type = "text/html";
    res1.data = data;
    res.set('Content-Type', 'text/html');
    res.send(Buffer.from(data));


})

app.post("/form1",urlencodedParser, (req, res) => {
    var fullUrl = req.protocol   '://'   req.get('host')   String(req.originalUrl);
    console.log("originalUrl",String(req.url))
    console.log("inside form1",req.body.ssid);
    return {"req.body.":"ok"}
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})
 

Ответ №1:

«окно.location.search» даст вам ответ на запрос в виде «?ssid=пользователь и пароль=адрес доступа».

Комментарии:

1. я попробовал это, я получаю ошибку ссылки: окно не определено

2. попробуйте ${окно. местоположение.поиск} или {окно. местоположение.поиск}

3. и если он все еще не работает и загружает изображение с ошибкой

4. это не будет работать, потому что в узле окна не существуют. если вы увидите мой код выше, я хочу получить доступ к этим данным в конечной точке /form1.

5. w3schools.com/js/js_window_location.asp