Codeigniter& Jquery Ajax,发布的数据没有通过

时间:2016-09-14 04:35:11

标签: javascript php jquery ajax codeigniter

当我通过Jquery Ajax发送post请求时,我在控制器中获取发布数据时遇到问题,我已经使用firebug检查了表单发布数据,但是当我执行print_r($ _ POST)时在控制器中;它返回一个空数组。可能有什么不对?

以下是相关代码:

表单HTML

<form id="contact-form" class="form-horizontal subscribe" accept-charset="utf-8" action="<?= base_url ( 'Contact/' ); ?>" method="post">
    <!--Name-->
    <div class="form-group">
        <label class="sr-only" for="name">Name</label>
        <div class="input-group">
            <div class="input-group-addon"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></div>
            <input id="name" type="text" class="form-control validate" name="name" placeholder="Your full name" value="">
        </div>
    </div>
    <!--Email-->
    <div class="form-group">
        <label class="sr-only" for="email">Email</label>
        <div class="input-group">
            <div class="input-group-addon"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span></div>
            <input id="email" type="text" class="form-control validate" name="email" placeholder="Your email address" value="">
        </div>
    </div>
    <!--Message-->
    <div class="form-group">
        <label class="sr-only" for="message">Message</label>
        <div class="input-group">
            <div class="input-group-addon"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span></div>
            <textarea id="message" name="message" class="form-control" rows="3" placeholder="Message"></textarea>
        </div>
    </div>
    <!--Submit Button-->
    <div class="form-group text-right">
        <input id="contact_us" type="hidden" name="contact_us" value="Submit" />

        <button type="submit" id="contact_us" class="btn btn-warning" name="contact_us" value="Submit">
            Send &nbsp;<span class="glyphicon glyphicon-send" aria-hidden="true"></span>
        </button>
    </div>
</form>

JAVASCRIPT

<script>
$( '#contact-form' ).submit ( function ( event ) {

    event.preventDefault (  );
    event.stopPropagation (  );

    var $scriptUrl = $( '#contact-form' ).attr ( 'action' );

    $.ajax ( {
        method : 'POST',
        url : $scriptUrl,
        data    : $( this ).serialize ( ),
        cache : false,
        processData: false,
        contentType: false,
        dataType : 'json',
        success : function ( data, textStatus, jqXHR ) {
            if ( data.success === true ) { alert ('success'); }
            else { alert ('failure'); }
        },
        error : function ( jqXHR, textStatus, errorThrown ) {
            alert (  jqXHR.responseText  );/*This returns the empty array*/
        }
    } );

} );
</script>

控制器(索引功能) http://mysite/Contact - Localhost-wamp)

public function index (  )
{
    print_r($_POST);
}

4 个答案:

答案 0 :(得分:1)

如果您使用的是jquery,那么您应该使用如下语法:

$.post('url',$("#contact-form").serialize(),function(data){
 //here take action on returned data
});

答案 1 :(得分:1)

您只需更改
data : $(this).serialize(),

data : $('#contact-form').serialize(),

在ajax $this中无效,因为当你在ajax中调用$ this时,$this总是调用父对象ajax。

答案 2 :(得分:1)

hints.ai_family = AF_INET更改为data : $( this ).serialize ( ),删除data : new FormData($('#contact-form')[0])如果这对您无效,请告诉我们?

答案 3 :(得分:0)

学生x。这可能不是您的答案,但这是您传递表格所需的全部内容

httr

});

您也可以使用它。我在我的所有表单中使用它,然后我只需要1个脚本。当然,你会改变成功。只需使用ID为ajax的所有表单命名

$(function() {
"use strict";
$("#form1").submit(function() {
    var data = $("#form1").serialize();
    //alert(data); return false;
    $.ajax({
        url: "/forms/form1",
        data: data,
        type: "POST",
        success: function(msg) {
            if (msg) {
                $("#display").html(msg);
            } else {
                $("#display").text("nothing came back For some reason");
            }
        }
    });
    return false;
});

}); })(jQuery的);