【问题标题】:How can I pass a value from Node Js to php then return back?如何将值从 Node Js 传递给 php 然后返回?
【发布时间】:2018-10-04 09:26:22
【问题描述】:

我有一个 php 文件和 Node API。服务器中的 php 文件,根据用户给定的最大值返回随机数。用户给定的最大值是从 Node Js 给 php 的。然后php返回随机值,然后值应该保存在MongoDB中

php 代码

<?php
    $min = 1111;
    $max = '';  // This is given by user from Node API

    $number = mt_rand($min, $max); //Generate a random number using the rand function.

    echo $number;
?>

节点 API

router.post("/findMax", upload.single('image'), function (req, res, next)
{
  var enteredMaxNum = req.body.maxNum;
  if(!enteredMaxNum)
  {
    return res.status(400).send("Maximum number should be given");
  }

  const objNumber = new Number(
    {
      max : enteredMaxNum,  // User given, should pass to php variable
      randNum : ????,       // php file return value
    });

    objNumber.save((err) =>
      {
        if (err)
        {
          console.log("New Error : " + err);
          return next(err);
        }
        res.status(201).send("Numbers saved");
      });
})

【问题讨论】:

  • 您应该从您的节点代码中连接到您的服务器(使用 php 脚本)并传递值
  • 如何将 php 脚本与 Node 连接起来?
  • 顺便说一句,为什么需要为此使用 php?而不是在节点中做所有事情?
  • 实际上php是用来通过给定的短信网关发送短信并生成随机数的。没有通过节点发送短信的选项。

标签: php node.js parameter-passing


【解决方案1】:

你为什么不使用axios。试试这个代码,希望能如你所愿

节点

router.post("/findMax", upload.single('image'), function (req, res, next)
{
  var enteredMaxNum = req.body.maxNum;
  if(!enteredMaxNum)
  {
    return res.status(400).send("Maximum number should be given");
  }

  axios.post('your-php-file-path', require('querystring').stringify({getNodeNum: enteredMaxNum}))
  .then(response => {
    if (response)
    {
      const objNumber = new Number({max: enteredMaxNum, randNum: response.data.random});
      objNumber.save((err) => {
        if (err)
        {
          console.log("New Error : " + err);
          res.status(500).send(err);
        }
        res.status(201).send("Numbers saved");
        });
    }
      })
  .catch(error => res.status(500).send(error));
})

php

<?php

    $min = 1111;

    if(isset($_POST['getNodeNum'])) // It should be $_POST
    {
        $max = $_POST['getNodeNum'];

        $number = mt_rand($min, $max);

        print(json_encode(['random' => $number]));
        exit();
    }
?>

【讨论】:

  • 谢谢你的想法。完美使用 axios。
猜你喜欢
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
相关资源
最近更新 更多