Ajax:在提交表单

时间:2017-01-08 11:01:03

标签: jquery ajax node.js

我正在使用Nodejs和Express工作。作为这个领域的新手,我遇到了一个问题,我现在已经尝试修复几个小时了:

在.html文件中,我有一个包含隐藏输入元素和按钮的表单。隐藏输入元素的值为空,应该在表单发送之前设置(这应该只是模仿这个玩具示例中的“输入操作”)。我想用Ajax做到这一点。这是我的代码:

对于Ajax,我包括:

<script src="jquery.form.js"></script>

HTML:

<form id="myForm" action="/myAction" method="post" >
    <input value="" type="hidden" name="myInputName" id="myHiddenInput">
    <input type="button" value="Solve!" onclick="calculate()"/>
</form>

使用Javascript:

function calculate(){
    var myString = "test";
    document.getElementById('myHiddenInput').value = myString ;
    console.log("before ajaxForm");
    $('#myForm').ajaxForm(function(res){
        console.log("middle ajaxForm");
        success: alert(res.toString());
        error: console.log("Something is wrong");;
    });
    console.log("after ajaxForm");
}

的NodeJS:

app.post('/myAction', function (req, res) {
    console.log("Form arrived.");
    res.end();
})

但是,我的代码似乎不起作用。

我的期望:

  • 客户端:控制台消息:“在ajaxForm之前”,“中间ajaxForm”,“在ajaxForm之后”
  • 服务器端:控制台消息:“表单已到达。”

我得到了什么:

  • 客户端:控制台消息:“在ajaxForm之前”,“在ajaxForm之后”
  • 服务器端:没有控制台消息
  • 完全没有错误

有人知道我可能做错了什么吗?一旦有东西到达服务器,如何访问字符串“text”,这是隐藏输入的值?

谢谢!

1 个答案:

答案 0 :(得分:0)

试试:

$('#myForm').ajaxForm({
    beforeSubmit: function(){console.log("middle ajaxForm")},
    success: function(res){alert(res)},
    error: function(){console.log("Something is wrong")}
});

JSFIDDLE