Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2012, 04:00
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Не передается переменная в Опере
Возникла проблема с Оперой. Во всех других браузерах все работает без проблем.

Цель: сделать переход на страницу с передачей ей переменной:

<input type="checkbox" onclick="location.replace('http://bla-bla-bla.ru/?work=1');">


На страницу переходит, но переменную не передает. В остальных браузерах все отлично. Как исправить ситуацию?
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2012, 05:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А вы фокус ввода в строку адреса пробовали ставить? В новых версиях Opera скрывает часть адреса.
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2012, 13:01
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Да я и вручную пробовал в адресной строке Оперы вбивать:

http://bla-bla-bla.ru/?work=1


Все равно не передает переменную.

Вместо
http://bla-bla-bla.ru/?work=1
открывается
http://bla-bla-bla.ru/

Последний раз редактировалось sitebuilder, 26.02.2012 в 13:03.
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2012, 13:11
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от sitebuilder Посмотреть сообщение
Да я и вручную пробовал в адресной строке Оперы вбивать:

http://bla-bla-bla.ru/?work=1


Все равно не передает переменную.

Вместо
http://bla-bla-bla.ru/?work=1
открывается
http://bla-bla-bla.ru/
Все она передает, вам выше сказали уже что при потере фокуса опера прячет в адресной строке все то что находится после вопросительного знака, если хотите что бы она отображала полный адрес кликнете правой мышью по иконке с глобусом и выберите "Показывать полный веб-адрес"
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2012, 13:23
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Я понял о чем Вы говорите. О том, что опера скрывает часть УРЛа. Выполнил команду opera:config#UserPrefs|ShowFullURL, поставил галочку чтобы выводились полные урлы.

После этого опять открываю:

http://bla-bla-bla.ru/?work=1


Теперь открывается как надо:

http://bla-bla-bla.ru/?work=1


Но переменную не передает (у меня стоит проверка на наличие переменной в коде следующей страницы). В IE и FF все успешно передает.

Версия Оперы: 11.61
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2012, 13:37
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от sitebuilder
Но переменную не передает (у меня стоит проверка на наличие переменной в коде следующей страницы). В IE и FF все успешно передает.
почистите кеш браузера, у этой версии оперы какие-то непонятки с кешом, она кеширует чуть ли не все подряд, кроме POST запросов.
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2012, 13:39
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Сделав print_r($_GET); на принимающей переменную странице, я получил ответ:

Array ( [work] => 1 )

Значит переменная все-же передается, но почему тогда не читается? Читаю ее через $_GET['work']. В остальных браузерах ведь все ок.

Последний раз редактировалось sitebuilder, 26.02.2012 в 13:47.
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2012, 13:57
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

в этом уж явно мы не помощники, особенно не видя того что у вас там за код и что там твориться.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2012, 15:00
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Переменная action передается на вторую страницу так:

<input id="agree" type="checkbox" onclick="location.replace('subs/?action=phone');">


Либо так:

<a href="subs/?action=phone">


На принимающей странице код такой:


<?php

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past


error_reporting(E_ALL);
ini_set('display_errors', 1);

define('SELF', dirname(__FILE__) . '/');
define('ROOT', realpath(SELF . '../') . '/');

if (isset($_GET['erotic']))
{
define('URL', '/erotic1/subs/?erotic=1');
}
else
{
define('URL', '/erotic1/subs/?work=1');
}

include SELF . 'lib/function.php';
include SELF . 'lib/config.php';
include SELF . 'lib/request.php';

session_set_cookie_params(365*24*60*60);
session_start();

if (get('action')) {
    $_SESSION['action'] = get('action');
    myredirect(URL);
}

$action = session('action', 'phone');
$ACTIONS = array('phone', 'code', 'delete', 'rules', 'finish', 'deleteok');

if (! $action || ! in_array($action, $ACTIONS)) {
    die('Unknown action');
}

$logged = true;

if (! in_array($action, array('rules', 'delete')) && ! $logged) {
    myredirect('/');
}

$innerContext = array();
$request = new Request($CNF);

if ($action === 'phone') {
    if ($_POST) {
        if (post('phone')) {
            $phone = str_replace('+', '', post('phone'));
            if (validate_phone($phone)) {
                $_SESSION['phone'] = $phone;
                $request->setPhone($phone);
                $request->submit(Request::ACTION_CREATE);
                if ($request->error()) {
                    $innerContext['error'] = $request->error();
                } else {
                    myredirect(URL . '&action=code');
                }
            } else {
                $innerContext['error'] = '<br>Ошибка';
            }
        }
    }
} elseif ($action === 'code') {
    if (! session('phone')) {
        myredirect(URL . '&action=code');
    }
    $innerContext['phone'] = session('phone');
    $innerContext['agreement'] = loadTemplate("mts_agreement");
    if ($_POST) {
        if (post('code')) {
            $request->setPhone(session('phone'));
            $request->setCode(post('code'));
            $request->submit(Request::ACTION_APPROVE);
            if ($request->error()) {
                $innerContext['error'] = $request->error();
            } else {
				$_SESSION['ok'] = $_POST ['code'];
                myredirect(URL . '&action=finish');
				//целевое действие на Вашем сайте
				
            }        
        } else {
            $innerContext['error'] = '<br><br>Ошибка';
        }
    }
} elseif ($action === 'delete') {
    if ($_POST) {
        if (post('phone')) {
            $phone = str_replace('+', '', post('phone'));
            if (validate_phone($phone)) {
                $request->setPhone($phone);
                $request->submit(Request::ACTION_CANCEL);
                if ($request->error()) {
                    $innerContext['error'] = $request->error();
                } else {
					myredirect(URL . '&action=deleteok');
                }
            } else {
                $innerContext['error'] = '<br>Ошибка';
            }
        }
    }
} 

$context['logged'] = $logged;
$context['content'] = loadTemplate($action, $innerContext);
echo loadTemplate('index', $context);


При выполнении в IE и FF все проходит на "ура" и выполняется "?action=phone". А в Опере выполняется то, что запрограммировано строчками:

if (! $action || ! in_array($action, $ACTIONS)) {
	    die('Unknown action');
	}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не передается переменная через событие onclick в IE frost18 Элементы интерфейса 0 21.08.2011 00:15
переменная не передается kuzroman jQuery 4 24.05.2011 18:26
Запрос к удаленному серверу. Проблемы в Опере San4ezy jQuery 1 23.03.2011 23:41
Переменная после отправки данных lukingnu AJAX и COMET 0 19.03.2011 20:24
Прелоуд картинок не работает в Опере Arseo Opera, Safari и др. 3 20.11.2009 19:45