ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用jQuery和PHP序列化和提交表单

2019-09-16 13:28:52  阅读:297  来源: 互联网

标签:php jquery forms serialization form-submit


我正在尝试使用jQuery发送表单的数据.但是,数据无法到达服务器.你能告诉我我做错了什么吗?

我的HTML表单:

<form id="contactForm" name="contactForm" method="post">
    <input type="text" name="nume" size="40" placeholder="Nume">
    <input type="text" name="telefon" size="40" placeholder="Telefon">
    <input type="text" name="email" size="40" placeholder="Email">
    <textarea name="comentarii" cols="36" rows="5" placeholder="Message"></textarea> 
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form>

JavaScript(与上面的表格在同一个文件中):

<script type="text/javascript">
    $(document).ready(function(e) {

        $("#contactForm").submit(function() {
            $.post("getcontact.php", $("#contactForm").serialize())
            // Serialization looks good: name=textInNameInput&&telefon=textInPhoneInput etc
            .done(function(data) {
                if (data.trim().length > 0) {
                    $("#sent").text("Error");   
                } else {
                    $("#sent").text("Success");
                }
            });

            return false;
        })
    });
</script>

服务器端PHP(/getcontact.php):

$nume = $_REQUEST["nume"]; // $nume contains no data. Also tried $_POST
$email = $_REQUEST["email"];
$telefon = $_REQUEST["telefon"];
$comentarii = $_REQUEST["comentarii"];

你能告诉我我做错了什么吗?

UPDATE

检查var_dump($_ POST)并返回一个空数组.

奇怪的是,在我的本地机器上测试的相同代码工作正常.
如果我在托管空间上传文件,它就会停止工作.我尝试不使用jQuery做一个老式的表单,所有数据都是正确的.

我不知道这将是一个服务器配置问题.有任何想法吗?

谢谢!

解决方法:

您可以使用此功能

var datastring = $("#contactForm").serialize();
$.ajax({
    type: "POST",
    url: "your url.php",
    data: datastring,
    dataType: "json",
    success: function(data) {
        //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this
        // do what ever you want with the server response
    },
    error: function() {
        alert('error handling here');
    }
});

返回类型是json

编辑:我使用event.preventDefault来防止浏览器在这种情况下提交.

在答案中添加更多数据.

dataType:“jsonp”如果是跨域调用.

beforeSend://这是一个预请求回调函数

complete://在请求结束后调用的函数.无论成功与否,必须执行的代码都可以在这里

async://默认情况下,所有请求都是异步发送的

cache://默认为true.如果设置为false,它将强制浏览器不缓存请求的页面.

查找官方页面here

标签:php,jquery,forms,serialization,form-submit
来源: https://codeday.me/bug/20190916/1807339.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有