Code Igniter - Получить значение хэша с помощью window.location.hash и использовать в set_value ()? - PullRequest
0 голосов
/ 07 октября 2010

Мне нужно получить значение хеша # из текущего URL окна с помощью javascript (не могу получить его с помощью PHP), а затем использовать его для установки значения attibute для ввода формы с помощью функции set_value () в CI.

Любые идеи, как я могу получить значение в JavaScript, а затем поместить его в функцию PHP? : -S

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Я не могу точно сказать, полностью ли вы понимаете связь между Javascript и PHP, поэтому я предполагаю, что вы не понимаете.PHP работает на сервере и выводит HTML в браузер (вместе с некоторыми заголовками и прочим).Как только HTML-код отправляется в браузер, то, что пользователь делает с вашим сайтом, становится вне вашего контроля, пока его браузер не выполнит другой запрос GET или POST (или не откроет постоянное соединение через веб-сокет).Как вы упомянули, для PHP невозможно сразу прочитать значение хэша, поскольку он предназначен только для браузера, доступного только через Javascript.Поскольку ваш PHP-скрипт для этого конкретного запроса прекратил работу, и данные страницы уже были выведены в браузер, какой смысл в том, чтобы захватывать значение с помощью Javascript, отправлять его обратно в PHP с помощью другого http-запроса, используйте set_value ()функция, а затем что?

Если вы используете window.location.hash и устанавливаете значение вашего поля ввода равным ему, вы сможете использовать set_value (), когда пользователь отправляет форму.Взгляните на вспомогательную функцию CI set_value ():

function set_value($field = '', $default = '')
    {
        if (FALSE === ($OBJ =& _get_validation_object()))
        {
            if ( ! isset($_POST[$field]))
            {
                return $default;
            }

            return form_prep($_POST[$field], $field);
        }

        return form_prep($OBJ->set_value($field, $default), $field);
    }

Сначала проверяется, настроили ли вы объект проверки формы.Если у вас есть, он запускает функцию form_prep (), используя set_value этого объекта (предположительно, чтобы управлять любыми правилами, которые вы установили в проверке формы. Если нет, он видит, существует ли это поле в массиве $ _POST.это не так, он возвращает значение по умолчанию. Если это так, он возвращает значение из массива $ _POST. Поэтому, если вы а) установите для него правило проверки формы и б) дадите этому полю ввода имя, которое вы хотитеиспользуйте в своей функции set_value (), вы сможете получить значение хэша в PHP, которое вы ввели в это поле ввода, используя Javascript.

2 голосов
/ 07 октября 2010

В Javascript вы можете достичь этого: hash = window.location.hash;

В PHP вы можете получить к нему доступ, используя parse_url()

parse_url() : Return Values

On seriously malformed URLs, parse_url() may return FALSE. Otherwise an associative array is returned, whose components may be (at least one):

    * scheme - e.g. http
    * host
    * port
    * user
    * pass
    * path
    * query - after the question mark ?
    * fragment - after the hashmark #

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