REST Codeigniter, jquery / ajax не отображает ответ - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь заставить программу типа helloworld работать с REST CI / jquery. Я включил свой (действительно элементарный) контроллер REST, просмотр файла и файл JavaScript и надеюсь, что ошибка, которая ускользнула от меня, выскакивает у вас.

Два выпуска:

  1. Ответ, который я получаю от сервера, не отображается - вместо этого обновляется экран (я знаю , это очень простая вещь, которую я пропустил). Если я перебираю код, я вижу отображение результата, но затем экран обновляется. И почему-то я не могу войти в свою функцию «успеха». Почему, о, почему?

2.После успеха я хочу перенаправить пользователя на другой URL, например, www.google.com. Буду ли я делать это в файле JavaScript? или на стороне сервера?

Заранее спасибо за помощь!

[Добавлено после решения проблемы: моя проблема не имеет ничего общего с REST или Codeigniter. Чисто проблема javascript] Контроллер REST:

<?php
    require APPPATH.'/libraries/REST_Controller.php';

    class Myex extends REST_Controller {
      function contact_post(){
        $result=array();
        $fname=$this->post('fname');
        $lname=$this->post('lname');
        $result['message']="contact_post has your name";
        $result['fname']=$fname."XX";
        $result['lname']=$lname."YY";
        $this->response($result,200);
      }
    }
?>

Просмотр файла:

<?php $this->load->view('includes/header')?>
    <div id="input-div"> 
        <form name="cookieform" id="login" method="post">
          First Name: <input type="text" name="fname" id="fname" class="text"/>
          Last Name: <input type="text" name="lname" id="lname" class="text"/>
          <input type="submit" name="submit" value="Submit" id='submit' class="page"/>
        </form>
    </div>
    <div id="resp-div"> 
    response goes here
    </div>
<?php $this->load->view('includes/footer')?>

Файл JavaScript:

function postsuccess(output) {
    $('#soln-div').html(output.message +'for user '+output.fname+' whose last name is '+output.lname).show('slow');
}
function post_contact() {
    $('#submit').click(function(){
        var output;
        var fdata,res;
        var furl=global_siteurl+'/myex/contact';
        var fname=$('#fname').val();
        var lname=$('#lname').val();
        fdata='fname='+fname+'&lname='+lname;
        res=$.ajax({
        url: furl,
        type: 'POST',
        dataType: 'json',
            data:fdata,
            success: function(output) { 
                postsuccess(output); 
          }
        });
    });
}
$(document).ready(function() {
    get_contact();
    post_contact();
});

1 Ответ

2 голосов
/ 28 марта 2012
  1. Вы вызвали свою функцию ajax после отправки формы, вы можете предотвратить обновление страницы двумя способами:
    (a) Используйте <input type="button" /> вместо отправки вызова вашей функции ajax на эту кнопку или
    (b) Используйте return false; в вашей функции успеха ajax-запроса.

  2. Вы можете перенаправить на любой URL в javascript, используя window.top.location = 'url-to-redirect';

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