我想问,为什么使用本机ajax的ajax请求的响应不会发布或返回我的整个页面?有什么我应该知道的吗?我查看了jquery.com上的文档,没有提到类似的东西,除非我在看别的地方。我可以得到任何帮助,为什么这种事情继续发生?jquery ajax codeigniter
这是处理有问题表单验证的函数。
乔
function showsupport()
{
$this->form_validation->set_rules('supportername','Your Name','trim|required|max_length[20]|xss_clean');
$this->form_validation->set_rules('supporteremail','Email Address','trim|required|valid_email|xss_clean');
$this->form_validation->set_rules('pledgedate','Pledge Date','trim|required|xss_clean');
$this->form_validation->set_rules('messagetxt','Your Message','trim|required|xss_clean');
if($this->form_validation->run() == FALSE)
{
echo validation_errors();
} else {
$this->load->model('support_m');
$name = $this->input->post('supportername');
$email = $this->input->post('supporteremail');
$date = $this->input->post('pledgedate');
$msg = $this->input->post('messagetxt');
$qry = $this->support_m->storepledge($name,$email,$date,$msg);
if($qry){
//$this->template->write_view('content','thanks');
//$this->template->render();
$datamsg['supportmsg'] = 'Message Added Successfully';
}else{
echo 'There was an error inserting into db';
}
}
}
这与产生的表格的图。
<?php
$formdata = array('id'=>'suppform');
echo form_open('homepage/showsupport',$formdata);
$namedata = array('name'=>'supportname','id'=>'supportname','size'=>'30','max_length'=>'25','value'=>set_value('supportname'));
echo '<label for="supportername">Your Name:'.form_input($namedata).'</label><br /><br />';
$emaildata = array('name'=>'supporteremail','id'=>'supporteremail','size'=>'30','max_lenth'=>'25','value'=>set_value('suppoteremail'));
echo '<label for="supporteremail">Email Address:'.form_input($emaildata).'</label><br /><br />';
$pledgedata = array('name'=>'pledgedate','id'=>'pledgedate','size'=>'30','max_length'=>'20','value'=>set_value('pledgedate'));
echo '<label for="pledgedate">Today\'s Date:'.form_input($pledgedata).'</label><br /><br />';
$msgdata = array('name'=>'messagetxt','id'=>'messagetxt','col'=>'2','rows'=>'8');
echo '<label for="messagetext">Your Pledge:'.form_textarea($msgdata).'</label><br />';
$submitdata = array('name'=>'submitbtn','id'=>'submitbtn','value'=>'Send');
echo '<label for="submitbutton">'.form_submit($submitdata).'</label><br />';
echo form_close();
?>
</div>
<div id="errorsechoed"><?php echo validation_errors();?></div>
的retured页面的HTML在div倾倒#errorsechoed
$('#suppform').submit(function(eve){
eve.preventDefault();
$.ajax({
type: 'POST',
cache: false,
url: 'homepage/showsupport',
data: $('#suppform').serialize(),
beforeSend: function(){
$('#supportform').block({message:'<h4> Processing...</h4>'})
},
complete: function(){
},
success: function(html){
$('#errorsechoed').text(html);
}
});
});
我一直试图让这个想通了,我想我已经取得了一些进展,这里是我有:
a)William Colin的模板库在指定区域的情况下工作,因此只有特定区域会一直刷新,而不是唯一的页面。因此,它的工作方式与其他的codeigniter标准设置有所不同。这肯定会阻碍jquery从服务器获取响应。它获取模板库(即区域)的位并将其渲染,最终重新构建整个页面。
B)当您运行form_validation库,模板不允许你只需要加载一个视图以正常的方式在笨,而你通过运行做到这一点:
$this->template->write_view('contentregion','viewname'); //writes the view
$这个 - >模板 - >渲染(); //在屏幕上呈现视图。
所以如果在验证失败的情况下没有这样做,那么formvalidation库吐出的错误消息就好像看不到视图。
我已经尝试了很多使用该库的函数的排列,并且仍然只能渲染出我网站的另一个页面。困惑
结论:
我觉得这个模板库是伟大的,但它需要一些更新,使得这些问题得到满足。当我必须做一个需要很多Ajax的站点时,我将不得不查看其他模板系统。希望威廉先生能看到这一点,并帮助研究这一点。
感谢社区大道说出我学到的东西。希望这对某人有用。
您能否提供您正在使用的代码示例? – stormdrain 2010-06-25 17:51:38
请检查我添加的内容,并告诉我是否做错了什么。感谢您愿意帮助。 – 2010-06-25 20:52:15
你能发布你的JavaScript代码吗?我在这里看不到任何AJAX。 – 2010-06-25 22:53:27