我想在CodeIgniter中做一个联系表单,使用jQuery和Ajax在提交按钮被按下时加载消息。我已经从net.tutsplus.com完成了教程CodeIgniter from Scratch: Day 8 – AJAX,但我无法正常工作。通过按提交按钮,文本“谢谢你”应该出现,而不是联系人表单,这是一个单独的PHP文件(当我想出如何做时,我将使它只是一个文本行在同一页上那)。如果我按提交按钮什么都没有发生,但是如果我在$.ajax({})
内写入了一个警报,或者如果我在data: form_data
之后删除了逗号,则视图将更改为“谢谢”视图,但“您键入了您的名称” - 未执行检查。我是新来的Ajax,不知道为什么它不工作,如果有人能告诉我我做错了什么,并解释视图更改为什么会起作用,而不是名称检查,我是否会添加警报或删除逗号。 (当然这些操作会在Chrome控制台中给出错误消息,因为它不应该是这样) 我正在使用模板来包含页眉,页脚和main_content。Ajax使用jQuery和CodeIgniter,Ajax调用不起作用
总之:为什么下面的ajax调用不起作用?
控制器:
<?php
class Contact extends CI_Controller{
function index(){
$data['main_content']='contact_form';
$this->load->view('includes/template', $data);
}
function submit(){
$name = $this->input->post('name');
$is_ajax=$this->input->post('ajax');
$data['main_content']='contact_form_thanks';
if($is_ajax){
$this->load->view($data['main_content']);
}else{
$this->load->view('includes/template', $data);
}
}
}
查看:
<div id="contact_form">
<h2>Contact</h2>
<?php
echo form_open('contact/submit');
echo form_input('name','Name', 'id="name"');
echo form_input('email', 'Email', 'id="email"');
$data = array(
'name' => 'message',
'cols' => 30,
'rows' => 12
);
echo form_textarea($data, 'Message', 'id="message"');
echo form_submit('submit', 'Send message', 'id="submit"');
echo form_close();
?>
</div><!--end contact-form-->
<!--Dissable the submit function-->
<script type="text/javascript">
$('#submit').click(function(){
var name = $('#name').val();
if(!name || name == 'Name'){
alert('Please enter your name');
return false;
}
var form_data = {
//csrf_token: $('input[name*="csrf_token"]').val(),
name: $('#name').val(),
email: $('#email').val(),
message: $('#message').val(),
ajax: '1'
};
//array
$.ajax({
url: "<?php echo site_url('contact/submit'); ?>",
type: 'POST',
data: form_data,
success: function(msg){
$('#main_content').html(msg);
}
//alert('bye'); //Why does it "work" when I write alert?
});
return false;
});
</script>
页眉:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv-se" lang="sv-se">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" media="screen" charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
那么你的嗅探说?我的意思是Chrome中的开发人员面板,“网络”选项卡,其中记录了所有服务器请求。在这里,我们可以看到您真正的ajax请求和原始服务器响应。 – zeliboba 2013-05-05 16:33:18
OT直接回答你的问题,但这将是值得一读的,我认为:http://codebyjeff.com/blog/2013/04/how-do-i-use-ajax-with-frameworkx – jmadsen 2013-05-06 03:15:52
谢谢!该链接很有帮助。有这么多的学习! – Jonie 2013-05-08 18:48:42