几个问题:
我正在使用CI和JQuery AJAX。
在下面的代码中,我汇编了dataString
,默认情况下会将其作为查询字符串附加到网址。
我已将AJAX“type”更改为POST,所以我的问题是 - 如何在我的CI应用中访问dataString
?
似乎我仍然需要使用
$name=$this->input->post('name')
对我而言,设置dataString
是多余的?
-
我尝试过搜索,却找不到具体的东西。
是否仍然可以使用CI验证库和AJAX?
if($this->form_validation->run() == FALSE)
{
// what can i return so that my CI app shows errors?
}
通常,您会重新加载联系表单或重定向用户。在理想的世界中,我希望将错误消息显示给用户。
Jquery的:
$(document).ready(function($){
$("#submit_btn").click(function(){
var name = $("input#name").val();
var company = $("input#company").val();
var email = $("input#email").val();
var phone = $("input#phone").val();
var message = $("textarea#message").val();
var dataString = 'name=' + name + '&message=' + message + '&return_email=' + email + '&return_phone=' +
phone + '&company=' + company;
var response = $.ajax({
type: "POST",
url: "newsite/contact_ajax/",
data: dataString
}).responseText;
//$('#contact').hide();
//$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>');
//$('#contact').fadeIn('slow');
return false;
});
});
希望我已经足够清楚 - 如果有人有一个很好的CI联系表格的好例子。互联网上有各种各样的东西,但没有什么可以打到所有的盒子。
感谢
答案 0 :(得分:4)
正如我在评论中所写,你不需要设置dataString
,因为jQuery可以为你做到:
$(document).ready(function($){
$("#submit_btn").click(function(){
var response = $.ajax({
type: "POST",
url: "newsite/contact_ajax/",
data: $(your_form_id).serialize()
}).responseText;
//$('#contact').hide();
//$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>');
//$('#contact').fadeIn('slow');
return false;
});
});
答案 1 :(得分:3)
如果您使用jQuery $.post()函数,则可以显式命名post变量,然后按照您在问题中建议的方式在控制器中访问它们。
$.post("<?php echo site_url("newsite/contact_ajax/";?>",
{my_name:name,my_company:company,my_email:email,my_phone:phone,my_message:message},
function(){
//callback function
},
html
);
在你的控制器中:
$this->input->post('my_name');
$this->input->post('my_company');
//etc