Не удалось получить полный URL [дубликат]

Объявлено, но не определено переменная или функция.

Типичным объявлением переменной является

extern int x;

. Поскольку это только объявление, требуется одно определение. Соответствующим определением будет:

int x;

Например, следующее генерирует ошибку:

extern int x;
int main()
{
    x = 0;
}
//int x; // uncomment this line for successful definition

Аналогичные замечания относятся к функциям. Объявление функции без ее определения приводит к ошибке:

void foo(); // declaration only
int main()
{
   foo();
}
//void foo() {} //uncomment this line for successful definition

Будьте осторожны, чтобы выполняемая вами функция точно соответствовала той, которую вы объявили. Например, у вас могут быть несогласованные cv-квалификаторы:

void foo(int& x);
int main()
{
   int x;
   foo(x);
}
void foo(const int& x) {} //different function, doesn't provide a definition
                          //for void foo(int& x)

Другие примеры несоответствий включают

  • Функция / переменная, объявленная в одном пространстве имен, определенное в другом.
  • Функция / переменная, объявленная как член класса, определяемая как глобальная (или наоборот).
  • Тип возвращаемого значения функции, номер и типы параметров и соглашение о вызове не совсем точно согласуются.

Сообщение об ошибке из компилятора часто дает вам полное объявление переменной или функции, которая была объявлена, но не определена. Сравните его с определением, которое вы указали. Убедитесь, что каждая деталь соответствует.

2
задан Suvash sarker 29 November 2013 в 09:39
поделиться

2 ответа

Хэш (строка, включая #) никогда не передается серверу, это исключительно свойство поведения браузера. Однако переменная $_SERVER['REQUEST_URI'] будет содержать остальные.

Если вам действительно нужно знать, что такое хеш, вам придется использовать свойство document.location.hash JavaScript, которое содержит содержимое хэша (вы можете вставить его в форму или отправить на сервер с запросом ajax). Вы можете передать полный URL-адрес, включая якорь (часть после #), используя Javascript onload function, который отправляет что URL в конечной точке Ajax.

Вы также можете посмотреть здесь Получить весь URL-адрес, включая строку запроса и привязку

1
ответ дан Community 26 August 2018 в 04:04
поделиться

Комментарий Пекки должен быть ответом. Параметр строки после хэш-тега не отправляется на сервер, это только для глаз браузера.

Это означает, что код сервера (PHP, в вашем случае) не содержит этой информации. Клиентский код (браузер, javascript, ...).

В идеале,

  • часть после? это информация для сервера. Поместите все, что нужно вашему серверу здесь
  • , часть после # - это информация для клиента. Поместите все, что нужно вашему клиенту.

Исторически, часть после # чаще всего использовалась для вашего браузера быстро перейдите к определенному якорю на странице. В настоящее время он чаще используется для хранения информации о состоянии для клиента.

Вы могли бы отправить javascript этой информации на сервер или выполнить различные действия на основе этой информации. AJAX - ваш друг.

8
ответ дан Konerak 26 August 2018 в 04:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: