【问题标题】:Data is not sent to Nodejs server on a simulated click模拟点击时数据不会发送到 Nodejs 服务器
【发布时间】:2018-09-27 03:26:52
【问题描述】:

给定以下代码:

<form action="/map" method="POST" id="submitform">
    <input type="text" name="uid" id="UID"/>
</form>
    <button type="submit" id="toSubmit" form="submitform" value="submit" >Submit</button>

我有一个功能非常好,可以将数据发送到这个表单中,然后点击“toSubmit”按钮。

function getData(uid) {
   document.getElementById("UID").value = uid;
   alert(document.getElementById("UID").value);
   document.getElementById("toSubmit").click();
}

在来自 Node.js 服务器的代码 sn-p 下方;

router.post('/map', function(req, res, next) {
    if (!req.body) return res.sendStatus(400);
    var id = req.body.uid;
    console.log(id);
});

我将 Node.js 与 express.js 和 body-parser 一起使用。

总之,如果我在不调用getData(uid) 函数的情况下提交数据,那么 div 可以完美工作,只需输入一些输入然后单击按钮,服务器就会收到数据,但是当我尝试制作 div 和按钮时invisible(display:none;) 用函数模拟点击发送数据出了点问题。

我认为这个.click() 函数可能存在限制问题。

我该如何解决这个问题?

【问题讨论】:

    标签: jquery node.js ajax


    【解决方案1】:

    如果 ID 不起作用,您可以尝试使用名称提交。

    <form name="formName" id="submitForm">
      <input type="text" />
    </form>
    
    function submitFormFunction(){
      document.formName.action="yourUrl";
      document.formName.submit();
    }
    

    【讨论】:

    • 嗨,我试过了,但结果相同。服务器没有收到 POST 方法,但很少收到 GETs
    • 表单中缺少method 属性
    【解决方案2】:

    而不是模拟一个按钮点击你想要做的是模拟一个表单提交:

       document.getElementById("submitform").submit();
    

    这应该会按照您的预期为您捆绑所有名称输入及其数据。

    根据浏览器,您也可以尝试:

        document.forms["submitform"].submit();
    

    【讨论】:

    • 嗨,还是不行...现在函数是:function getData(uid){ document.getElementById("UID").value = uid; alert(document.getElementById("UID").value); document.getElementById("submitform").submit(); //document.getElementById("toSubmit").click(); }
    • 到底发生了什么?
    • 数据被设置到输入字段中。根据您的代码行,应该提交表单。但是服务器没有收到 POST。再次,如果我手动做同样的事情,一切正常很好,服务器能够读取这个 POST 方法,但是如果我尝试使用 .submit() 或 .click() 来做,什么也不会发生。
    • 你是怎么调用 getData() 的?
    • getData() 是从 MapBox 脚本调用的。但您不必担心,我进入函数,警报正在工作,数据从div,我什至为按钮做了一个 onclick="alert(smth)" 只是为了确保它被点击,是的,它是,但我不知道为什么数据没有发送到服务器......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2011-07-28
    • 2022-01-12
    • 1970-01-01
    • 2020-08-17
    • 2015-03-05
    相关资源
    最近更新 更多