用Javascript从HTML表单发送POST数据?

7
我会尽力为您翻译中文。以下是需要翻译的内容:

我试图从没有动作的表单发送帖子数据,并使用JavaScript将信息发送到必须处理帖子信息的文件。

这里是我的代码:

<HTML>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
            <script>    
    function post_to_url(path, params, method) {
        method = method || "post";

        var form = document.createElement("form");

        form._submit_function_ = form.submit;

        form.setAttribute("method", method);
        form.setAttribute("action", path);

        for(var key in params) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
        }

        document.body.appendChild(form);
        form._submit_function_();
    }
    post_to_url("./postinfo.php", { submit: "submit" } );
        </script>   
<form method="post" onsubmit="return post_to_url()">
<input type="text" name="ime">
<input type="submit" id="submit" name="submit" value="Send">
</form>

我该如何使用JavaScript将POST数据发送到postinfo.php,并在HTML表单中保留空操作?

提前致谢!


在你的代码中,你调用了两次 post_to_url - 一次是在定义函数后,另一次是在表单提交时。我怀疑这可能会引起问题。 - Matthew
5个回答

11

你很幸运,因为有一个名为"Ajax"的JQuery函数可以帮你处理这个问题!

你需要做的就是调用JQuery,并使用如下代码:

$('#form_id').on('submit', function(e){
    e.preventDefault();
    $.ajax({
       type: "POST",
       url: "/postinfo.php",
       data: $(this).serialize(),
       success: function() {
         alert('success');
       }
    });
});

我尝试过,但它不像在HTML表单中的action="postinfo.php"那样将我重定向到postinfo.php。而且它也没有给出成功提示。我在我的帖子表单之前粘贴了您的代码并添加了id="form_id"。 您可以帮我检查一下我的代码,并更改一下使其正常工作并展示给我吗? - Tonny Struck
你还没有安装JQuery - 尝试将以下代码添加到<head>标签中:<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> - Richard Peck
此外,异步表单提交的目的不是为了重定向您,而是执行后台任务。如果您想要重定向,为什么不直接提交没有任何JS的表单呢? - Richard Peck
1
更具体地说,我认为JSFiddle被拒绝了,那么为什么不在您的页面上尝试我编写的代码,看看是否可以呢? - Richard Peck
2
好的,希望现在它能正常工作 :) 考虑到我的代码实际上是有效的,你是否可以友善地点赞并接受答案呢? - Richard Peck
显示剩余8条评论

1
function post_to_url(path, params, method) {
    method = method || "post";

    var form = document.createElement("form");


   _submit_function_ = form.submit;
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);

        form.appendChild(hiddenField);
    }

    document.body.appendChild(form);
    form._submit_function_();
}
post_to_url("./postinfo.php", { submit: "submit" } );

change to

post_to_url("/postinfo.php", { submit: "submit" } );

0
<html>
<form action="{{ url_for('details') }}" method="post">
<p>ENTER NAME<input id="uname" type="text" name="username"></p>

    <p>ENTER DESIGNATION<input type="text" id="pwd" name="pwd"></p>
    <!--<P>ENTER EMAIL-ID</EMAIL-ID><input id="email" type="text" name="email-id"></P>-->
<input type="submit" value="Submit" name="Submit">


</form>
</html>`

0

试试这段代码。

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<script type="text/javascript">
    function validate() {
        var ra = document.getElementById("uname").value;
        var rag = document.getElementById("pwd").value;
        $.ajax({
       type: "POST",
        url: "/login",
            contentType: "application/json",
         dataType: 'json',
       data:JSON.stringify({
           username:ra,
           password:rag
       }),
       success: function() {
         alert('success');
       }
    });
        console.log(ra, rag)

    }
</script>
<html>
<form name="myform">
<p>ENTER USER NAME <input id="uname" type="text" name="username"></p>

    <p>ENTER PASSWORD <input type="password" id="pwd" name="pwd"></p>
<input type="button" value="Check In" name="Submit" onclick= "validate()">


</form>
</html>

-2
 __author__ = 'raghavendra'
from flask import Flask, render_template, request, jsonify
import os
import sys
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
# sys.path.append(('/path/to/django/project'))
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('temp.html')

@app.route('/save',methods=['GET','POST'])
def details():

    a = request.form.get('username')
    b = request.form.get('pwd')
    print a, b

if __name__ == '__main__':
    app.run()

这是使用插件吗?这甚至是JS吗? - Ivan Durst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接