JQuery AJAX Codeigniter - PullRequest
       4

JQuery AJAX Codeigniter

0 голосов
/ 25 июня 2010

Я хотел спросить, почему ответ на запрос 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. Надеюсь, мистер Уильям сможет увидеть это и помочь разобраться в этом.

Спасибо сообществу за проспект, чтобы сказать, что я узнал. Надеюсь, это кому-нибудь пригодится.

1 Ответ

1 голос
/ 26 июня 2010

Это потому, что вы устанавливаете тип данных в обратной передаче типа 'html':

"html": возвращает HTML в виде обычного текста; включенные теги сценария оцениваются при вставке в DOM.

если вы просто хотите показать, что запрос был успешным или неудачным, вы можете заполнить #errorsindicated следующим образом:

success: function(){
            $('#errorsechoed').html('<h4> Request Successfull...</h4>');
}
error: function(){
            $('#errorsechoed').html('<h4> Request Failed...</h4>');
}

Вы можете получить более подробную информацию об ошибке, если хотите. Смотрите раздел об ошибке в документации jQuery ajax: http://api.jquery.com/jQuery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...