序列化和提交表单使用jQuery和PHP(Serializing and submitting a

2019-07-20 20:16发布

我试图使用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和所有的数据是正确的。

我不知道为什么这是一个服务器的配置问题。 有任何想法吗?

谢谢!

Answer 1:

您可以使用此功能

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: //功能被请求具有无论成功或错误的被执行可以去这里ends.so代码之后调用

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

cache:默认为true //。 如果设置为false,这将迫使要求不被浏览器缓存的页面。

找到的官方页面在这里



Answer 2:

您可以添加表单数据的额外数据

使用serializeArray并添加额外的数据:

var data = $('#myForm').serializeArray();
    data.push({name: 'tienn2t', value: 'love'});
    $.ajax({
      type: "POST",
      url: "your url.php",
      data: data,
      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 handing here');
    }
});


Answer 3:

你有没有在控制台中检查是否从表格数据被正确序列化? 是ajax请求成功? 你也没关占位报价中,这可能会导致一些问题:

 <textarea name="comentarii" cols="36" rows="5" placeholder="Message>  


Answer 4:

你有没有在看萤火虫如果POST或GET?

检查控制台显示。

放入测试脚本:

console.log(data);

你可以看到来自服务器的响应,如果它显示的东西。



Answer 5:

这个问题可能是PHP配置:

请检查设置max_input_vars在php.ini文件。

尝试增加此设置的值以5000为例子。

max_input_vars = 5000

然后重新启动Web服务器和尝试。



Answer 6:

看到这个以前的帖子答案。 比你可以使用。员额()或获得(),以串行数据发送到服务器。

表单数据转换为与jQuery JavaScript对象

无论如何,这是非常混乱造成这种缺乏细节你的情况。

如果您使用的是Web服务器(非本地)这个代码可以,如果你忘了设置的实际jQuery的链接是错误的。 我不知道,即使你的绝对路径或相对路径的jQuery参考!?



Answer 7:

 $("#contactForm").submit(function() {

    $.post(url, $.param($(this).serializeArray()), function(data) {

    });
 });


Answer 8:

两端注册或用户通过AJAX自动注册到“Shouttoday”当他们通过表单提交完成注册。

var deffered = $.ajax({
     url:"code.shouttoday.com/ajax_registration",
     type:"POST",
     data: $('form').serialize()
    }); 

        $(function(){ 
            var form;
            $('form').submit( function(event) {
                var formId = $(this).attr("id");
                    form = this;
                event.preventDefault();
                deffered.done(function(response){
                    alert($('form').serializeArray());alert(response);
                    alert("success");
                    alert('Submitting');
                    form.submit();
                })
                .error(function(){
                    alert(JSON.stringify($('form').serializeArray()).toString());
                    alert("error");
                    form.submit();
                });
            });
         });


Answer 9:

<script type="text/javascript">
$(document).ready(
        function() {
            populateUser();
            $("#user").submit(
                    function(e) {
                        e.preventDefault();
                        jQuery.ajaxSetup({
                            async : false
                        });
                        if ($("#roleId").val() != 'Select role') {
                            $.post($(this).attr("action"), $(this)
                                    .serialize(), function(response) {
                                alert(response.message);
                                $("#user")[0].reset();
                                populateUser();
                                jQuery.ajaxSetup({
                                    async : true
                                });
                            });
                        } else {
                            alert("Please Select the role of user");
                        }
                    })
        });



文章来源: Serializing and submitting a form with jQuery and PHP