Я хотел спросить, почему ответ на запрос ajax с использованием нативного ajax не публикует или не возвращает всю мою страницу? что я должен знать? Я посмотрел документацию на jquery.com, и ничего подобного не упоминается, если только я не смотрю куда-то еще. Могу ли я получить какую-либо помощь по поводу того, почему это происходит?
Это функция, которая обрабатывает проверку формы, о которой идет речь.
Джо
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>
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) библиотека шаблонов от Уильяма Колина работает там, где указаны регионы, поэтому постоянно обновляется только конкретный регион, а не единственная страница. В результате он работает не так, как другие стандартные настройки для codeigniter. Это определенно мешает jquery получать ответ от сервера. Он получает биты библиотеки шаблонов (то есть регионов) и выводит их, что в итоге приводит к перестройке всей страницы.
b) Когда вы запускаете библиотеку form_validation, Template не позволяет вам просто загрузить представление обычным способом в codeigniter, скорее вы делаете это, выполнив:
$this->template->write_view('contentregion','viewname'); //writes the view
$ this-> template-> Render (); // отображает вид на экране.
поэтому, если этого не сделать, если проверка не удалась, сообщения об ошибках, выдаваемые библиотекой проверки формы, просто никогда не попадают в представление.
Я перепробовал множество вариантов использования функций, которые поставляются с этой библиотекой, и до сих пор просто могу отобразить еще одну страницу моего сайта. запутался
ВЫВОД:
Я думаю, что эта библиотека шаблонов отличная, но она нуждается в некотором обновлении, поэтому эти проблемы встречаются. Мне придется смотреть на другие системы шаблонов, когда мне нужно сделать сайт с большим количеством AJAX. Надеюсь, мистер Уильям сможет увидеть это и помочь разобраться в этом.
Спасибо сообществу за проспект, чтобы сказать, что я узнал. Надеюсь, это кому-нибудь пригодится.