#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.