2015-03-10 2 views
0

Я пишу в основном на PHP, но для одной функции мне требуется использовать JavaScript. Мне нужно получить доступ к переменной PHP в моем JavaScript. Я поместил следующий код между тегами <head>:Получить PHP-переменную в JavaScript

<script> 
    $(document).ready(function(){ 
     $(document).keyup(function(e) { 
      if ($('.pho_big').is(':visible') && e.keyCode==27) { 
       var js_link = '<?php echo $p_link; ?>'; 
       window.location.href = js_link; 
      } 
     }); 
    }); 
</script> 

Короче говоря, при нажатии клавиши ESC, я хочу пойти в $p_link. Поэтому я пытаюсь скопировать $p_link в js_link и перейти туда. Вместо того, чтобы получать содержимое $p_link, мой браузер пытается перейти на <?php%20echo($p_link)%20?>, что явно неверно.

Я уже ушел here, here и here, все из которых, похоже, говорят мне делать именно то, что я делаю. Мое знание JavaScript почти нулевое, поэтому я, вероятно, пропустил что-то простое, но я не знаю достаточно, чтобы узнать, что или устранить.

+0

Оказывается, что '$ p_link' пустая строка или что-то вторит этому. Также обратите внимание, что так, как вы это делаете, PHP создает JavaScript при загрузке страницы, поэтому JavaScript будет иметь жесткое значение того, что '$ p_link' находится во время рендеринга страницы, а не когда нажата клавиша. Если это проблема эха, попробуйте 'var_dump'ing it – JustGage

+0

После вашего редактирования, если вы получаете литеральные теги в своем JavaScript, что означает, что на самом деле это не происходит через PHP, возможно, потому, что вы закончили свой файл в' .js', а не '. php' – JustGage

+0

в (внешнем) php-файле, $ p_link - это не что иное, как строка символов, иногда. и/ Код, который я вставил, находится в файле .tpl (header.tpl), на который ссылается файл .php. Это имеет значение? –

ответ

1

это выглядит как <?php echo $p_link; ?> не интерпретируется php.so js_link содержит строку <?php echo $p_link; ?> .when вы установите window.location.href в <?php echo $p_link; ?>. браузер пытается перейти на [less_than]?php%20echo($p_link)%20?[greater_than], который является кодировкой url <?php echo $p_link; ?>.

(извините, так как у меня низкая репутация, я не могу выразить свое мнение)

+0

Да, это именно то, что происходит, только с фактическими тегами [more_than] в URL-адресе (я не мог понять, как заставить их нормально появляться здесь). ПОЧЕМУ это происходит? –

+0

как @justGage. ваш файл может заканчиваться расширением html или js.So php-интерпретатор не имел возможности интерпретировать его. Проверьте его расширение. – balajisoundar

+0

вы можете создать переменную типа ' ', где-то в вашем php-файле (до включения header.tpl) и используйте' window.location.href = window.js_link; 'внутри функции обработки событий. – balajisoundar

Смежные вопросы