我想問,爲什麼使用本機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