如何在客户端 nextjs 中更改服务器端变量

贝尔纳多·奥利桑

所以我在 api/scraper.js 中有这段代码

const request = require("request-promise");
const cheerio = require("cheerio");

let url = "https://crese.org/distintivo-azul/";

let result;

request(url, (err, response, html) => {
    if (!err && response.statusCode == 200) {
        const $ = cheerio.load(html);

        const allText = $("html *").contents().filter(function () {return this.type === "text"}).text();
        
        const texts = ["respeto a la dignidad de las personas", "respect for the dignity of people"]
        result = allText.includes("respeto a la dignidad de las personas")

    }
})

export default function handler(req, res) {
    res.status(200).json({result: result})
}

它可以正常工作,但是let url变量需要更改。我有一个表单来处理此更改,因此用户可以将 url 从客户端放入输入表单中......当用户从客户端“输入表单”发送 url 并更改让 url服务器端的变量。

简而言之,使用客户端中的表单标记“修改 api/scraper.js 中的 url 变量”。

有什么想法来处理这个吗?

编辑客户端看起来像这样

    // Automate steps process
const handleSubmit = async (event) => {
    event.preventDefault();
    const response = await fetch("/api/scraper");

    if (!response.ok) {
        throw new Error(`Error: ${response.status}`);
    }

    const result = await response.json();
    console.log(Object.values(result))
    return setData(result)
    //console.log(event.target.url.value);
  };

// get results from backend
const [results, setData] = useState([])


return (
    <div>
        <Head>
            <title>Blue Token | Steps</title>
            <meta name="description" content="Generated by create next app" />
            <link rel="icon" href="/logo.png" />
        </Head>

        <div className={styles.minting}>
            <form onSubmit={handleSubmit}>
                <h1>Enter Your website URL</h1>
                <label>We are going to check if you have the requesits</label><br /><br />  
                <input type="url" name="url" placeholder="url" />
                <input type="submit" />
            </form>
因德尔

你可以做这样的事情。您必须在 http 请求的正文中从客户端传入 url


function startScrape(req, res) {
  request(req.body, (err, response, html) => {
    if (!err && response.statusCode == 200) {
      const $ = cheerio.load(html);

      const allText = $("html *")
        .contents()
        .filter(function () {
          return this.type === "text";
        })
        .text();

      const texts = [
        "respeto a la dignidad de las personas",
        "respect for the dignity of people"
      ];
      let result = allText.includes("respeto a la dignidad de las personas");

      res.status(200).json({ result: result });
    }
  });
}

export default function handler(req, res) {
if(req.method==='POST')
  startScrape(req, res);
}



客户

const [results, setData] = useState([]);
  const [url, setUrl] = useState("");

  const handleSubmit = async (event) => {
    event.preventDefault();
    
    // Here we're passing url inside body of the request which will 
    // be received on the backend

    const response = await fetch("/api/scraper", { method: "POST", body: url });

    if (!response.ok) {
      throw new Error(`Error: ${response.status}`);
    }

    const result = await response.json();
    console.log(Object.values(result));
    return setData(result);
    //console.log(event.target.url.value);
  };

  return (
    <div>
      <div>
        <form onSubmit={handleSubmit}>
          <h1>Enter Your website URL</h1>
          <label>We are going to check if you have the requesits</label>
          <br />
          <br />
          <input
            type="url"
            name="url"
            placeholder="url"
            value={url}
            onChange={(e) => setUrl(e.target.value)}
          />
          <input type="submit" />
        </form>
      </div>
    </div>
  );


本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

初始服务器端渲染后如何使用React + NextJS立即重新渲染客户端?

如何使用NextJS和React Router呈现服务器端反应内容?

如何将变量从服务器端返回到客户端脚本?

在NextJs的服务器端代码中访问静态资源?

NextJS路由:为什么需要不同的客户端和服务器路由?

在NextJS中从服务器端重定向

如何在Flask / Socketio中使用服务器接口在服务器端生成“虚拟客户端”

在Nextjs中,如何以编程方式触发服务器端渲染?

如何在客户端渲染的React应用中发出服务器端请求?

如何使用Ajax更改服务器端语言Cookie(例如客户端)?

如何在js中将js中的变量从服务器端传递到客户端

如何在Node.js中从客户端调用服务器端函数(例如html按钮onclick)?

如何从流星中的客户端调用服务器端功能

在JavaScript中的客户端调用服务器端变量

如何在cakePHP 3.x中接收从客户端发送到服务器端的JSON

如何在OpenVPN中与服务器端共享客户端Internet连接?

在Meteor中,服务器端操作完成后如何在客户端知道?

如何在服务器端拆分JSON,然后在客户端加入并流式传输

如何使用服务器端C#在客户端更改表单属性

服务器如何在服务器/客户端拓扑中检测客户端电源关闭

在 HTTP/2 中,标头如何在客户端和服务器端保持同步?

在 Angular Universal 中,如何在服务器端渲染期间避免 API 客户端并将它们推迟到客户端?

如何在客户端更新 Blazor Server 应用程序的服务器端更改?

如何在next.js应用程序中从服务器端获取客户端的IP地址?

Nextjs - 在服务器端访问 url 参数

如何在 nextjs 中为服务器端编写中间件

NextJS SSR 和客户端状态

如何在 js/googlescript 中访问从客户端到服务器端的对象数组中传递的变量

在 NEXTJS 中将变量从客户端传递到服务器端