当我通过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 <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);
}
答案 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的);