如何使用jquery $.post() 方法提交表单值[重复]

Posted

技术标签:

【中文标题】如何使用jquery $.post() 方法提交表单值[重复]【英文标题】:How to use jquery $.post() method to submit form values [duplicate] 【发布时间】:2014-11-10 22:29:08 【问题描述】:

我有一个带有表单的主页和另一个用于处理表单值的页面 这是2页的源代码

表单页面:

<meta charset="UTF-8">
<title>Form Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="process.php" method="post" id="reg-form">
        Username: <input type="text" id="username" name="username">
        <br>
        Password: <input type="password" id="password" name="password">
        <br>
        <button type="submit" id="submit-btn">Traditional Submit</button>
        <button type="button" id="post-btn">$.Post Submit</button>
</form>
<script>
    $("#post-btn").click(function()        
        $.post("process.php",function(data)
            alert(data);
        );
    );
</script>

流程页面:

<?php
$username=$_POST["username"];
$password=$_POST["password"];
echo "Username: ".$username;
echo "<br>";
echo "Password: ".$password;?>

如果我点击“传统提交”按钮,效果很好。

但是当我点击“$.Post Submit”按钮时,我只是不断收到错误消息“Notice: Undefined Index ...”

我不知道问题出在哪里,请帮忙检查和修复,在此先感谢!

【问题讨论】:

是的,我正在尝试使用 Ajax 处理表单值并停留在主页上(而不是像使用传统表单提交那样被重定向到流程页面) 【参考方案1】:

您还必须选择并发送表单数据:

$("#post-btn").click(function()        
    $.post("process.php", $("#reg-form").serialize(), function(data) 
        alert(data);
    );
);

查看 jQuery serialize 方法的文档,该方法将表单字段中的数据编码为要发送到服务器的数据字符串。

【讨论】:

只需添加:action="process.php" method="post" 不再需要在 &lt;form&gt; 元素上,因为提交由 jQuery AJAX .post() 方法处理。【参考方案2】:

使用val() 获取文本框的值并将它们存储在变量中。通过$.post 传递这些值。在使用$.Post Submit button 时,您实际上可以删除表单。

<script>

    username = $("#username").val(); 
    password = $("#password").val();

    $("#post-btn").click(function()        
        $.post("process.php",  username:username, password:password  ,function(data)
            alert(data);
        );
    );
</script>

【讨论】:

更好的是,使用serialize method @SeanVieira 我不知道如何使用它。它的目的是什么?我一直在学习,但就是不明白:) 请告诉我 serialize 采用一种形式(或一组输入)并将所有inputselecttextarea 标签转换为适合作为正文发送的字符串HTTP POST 请求(或作为 GET 请求的查询字符串)。例如,序列化具有单个字段的表单,&lt;input name="firstName" value="Sean"&gt; 变为 "firstName=Sean" @SeanVieira 好的,谢谢,然后您只需要发布或获取名字? :) 是的 - 那么您可以直接在 $.ajax 或其任何表亲($.post$.get)中使用该字符串,就像 this answer 所做的那样【参考方案3】:

你的$.post 没有数据。您需要传递表单数据。您可以使用serialize() 发布表单数据。试试这个

$("#post-btn").click(function()
    $.post("process.php", $('#reg-form').serialize() ,function(data)
        alert(data);
    );
);

【讨论】:

以上是关于如何使用jquery $.post() 方法提交表单值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jquery中$.get()提交和$.post()提交有区别吗?

如何确保 jQuery 使用 POST 在标头中提交正确的 JSON 键?

如何使用 jquery $.post 确保以 UTF8 提交的变量

python测试开发django-131.jQuery中$.ajax()方法POST提交contentType:“application/json“类型数据

python测试开发django-129.jQuery中$.get()和$.post()提交方法学习

Jquery ajax提交表单几种方法详解