как перенаправить в jquery всплывающее окно fancybox на следующий page…in jquery ( jquery )

#javascript #jquery #ajax #fancybox-2

#javascript #jquery #ajax #fancybox-2

Вопрос:

Я использую всплывающее окно jquery fancy box …. для всплывающего окна…. Но когда я отправляю … мою форму, которая перенаправляет в тот же window…..in всплывающее окно.. Я хочу перенаправить свою страницу в другое открытое окно …. не в том же всплывающем окне…

Я использовал target blank .. но он работает каждый раз .. при нажатии … мне нужно перенаправить, когда я получу свой логин…. Я создаю свой проект в codeigniter…..

мой контроллер….

 public function login()
    { 
        if ( $this->input->post('action') )
        {       
            $this->form_validation->set_rules('user_name', 'Username','required|valid_email');
            $this->form_validation->set_rules('password', 'Password', 'required|');


            if ($this->form_validation->run() == TRUE)
            {

                $username  =  $this->input->post('user_name');
                $password  =  $this->input->post('password');               
                $rember    =  ($this->input->post('remember')!="") ? TRUE : FALSE;

                 if( $this->input->post('remember')=="Y" )
                 {
                        set_cookie('userName',$this->input->post('user_name'), time() 60*60*24*30 );
                        set_cookie('pwd',$this->input->post('password'), time() 60*60*24*30 );
                  }
                  else
                  {                      
                        delete_cookie('userName');
                        delete_cookie('pwd');
                  }     

                $this->auth->verify_user($username,$password);  

                if( $this->auth->is_user_logged_in() )
                {
                      if( $this->session->userdata('ref')!=""  )
                      { 

                        redirect($this->session->userdata('ref'),'');   

                      }
                      else
                      {

                         redirect('members/myaccount','refresh'); 

                      }


                }
                else
                {

                    $this->session->unset_userdata(array("ref"=>'0'));
                    $this->session->set_userdata(array('msg_type'=>'error'));
                    $this->session->set_flashdata('error',$this->config->item('login_invalid'));        
                    redirect('users/login', '');
                }

            }
            else
            {
                $data['heading_title'] = "Login";           
                $this->load->view('users_login',$data); 
            }               
        }
        else
        {
            $data['heading_title'] = "Login";           
            $this->load->view('users_login',$data);     
        }
    } 
 
 $(window).load(function (e) {
    $("#back-top").hide();
    $(function () {
        $(window).scroll(function () {
            if ($(this).scrollTop() > 100) {
                $('#back-top').fadeIn();
            } else {
                $('#back-top').fadeOut();
            }
        })
    });

    $(".login").fancybox({
        'width': 367,
        'height': 600,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".fotget").fancybox({
        'width': 425,
        'height': 286,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".profile").fancybox({
        'width': 700,
        'height': 505,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".details").fancybox({
        'width': 400,
        'height': 200,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".enquiry").fancybox({
        'width': 359,
        'height': 450,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".contact").fancybox({
        'width': 317,
        'height': 353,
        'autoScale': false,
        'type': 'iframe'
    });

    $(".map").fancybox({
        'width': 425,
        'height': 355,
        'autoScale': false,
        'type': 'iframe'
    });
});
 

Ответ №1:

причина, по которой это происходит, заключается в том, что ваш всплывающий контент имеет рамку iframe… вы можете отправить сообщение обратно в родительское окно, чтобы выполнить перенаправление в главном окне браузера, сообщение Google в iframe с его родительским окном должно предоставить вам информацию, необходимую для этого, однако все это зависит от того, имеете ли вы контроль над страницей, которая создается в iframe!

ПРИМЕР: … где бы ни находились ваши перенаправления … замените на…

 echo "<script type="text/javascript">window.top.postMessage('logged_in', '*');</script>";
exit; //make sure this is here, to stop php execution!!
 

Затем в вашем родительском окне (которое инициализирует fancyboxes …)

 window.onmesage = function(e){ 
  if(e.data == 'logged_in'){ 
    window.location.href = 'http://pathtopage';
  }
}
 

ПРИМЕЧАНИЕ: ‘logged_in’ также может быть строкой json

 '{ "action":"something","redirect":"http://url" }'
 

просто используйте

 JSON.parse(e.data); 
 

в прослушивателе для извлечения объекта json

РЕДАКТИРОВАТЬ: ну и дерьмо… Я неправильно понял ваш вопрос… Я не вижу элемент, который вы используете для отправки формы … но обычно вы должны выполнить e.preventDefault(); для этого элемента, прежде чем разрешить его перенаправление anywhere….so например, вы используете тег привязки…

 $('a.form-submit').on('click',function(e){
  e.preventDefault();
  var redir = $(this).attr('href');
  var formData = $('#theform').serialize();
  $.post('http://formhandler/route',formdata,function(){
    //open a new window...
    window.open(redir);
    //or send data back to parent window...
    window.top.postMessage(redir,'*');
  });
});