Подтвердить что ты не робот

Как включить js файл в php?

У меня проблема с файлом js в php. если я включаю его так:

?> <script type="text/javascript" href="file.js"></script> <?php

файл не включен, и я получаю сообщение об ошибке, что функция не определена.

Когда я пробую это так:

<script type="text/javascript">
document.write('<script type="text/javascript" src="datetimepicker_css.js"></script>');
</script>

первый тег в функции document.write закрывается <script type="text/javascript">

Каков правильный способ сделать это?

спасибо, Себастиан

4b9b3361

Ответ 1

PHP совершенно не имеет отношения к тому, что вы делаете. Сгенерированный HTML - это то, что считается.

В вашем случае отсутствует атрибут src. Используйте

 <script type="text/javascript" src="file.js"></script>

Ответ 2

В вашем примере вы используете атрибут href, чтобы указать, где можно найти файл JavaScript. Это должен быть атрибут src:

?> <script type="text/javascript" src="file.js"></script> <?php

Для получения дополнительной информации см. w3schools.

Ответ 3

Я никогда не был поклонником закрытия блоков PHP для вывода контента в браузер, я предпочитаю, чтобы мой вывод был захвачен, поэтому, если в какой-то момент в моей логике я решил, что хочу изменить свой вывод (после того, как результат уже был отправлено) Я могу просто удалить текущий буфер.

Но, как сказал Пекка, основная причина, по которой у вас возникают проблемы с включением javascript, заключается в том, что вы используете href для указания местоположения файла js, где вы должны использовать src.

Если у вас есть файл функций с вашими функциями внутри, добавьте что-то вроде:

function js_link($src)
{
    if(file_exists("my/html/root/" . $src))
    {
        //we know it will exists within the HTTP Context
        return sprintf("<script type=\"text/javascript\" src=\"%s\"></script>",$src);
    }
    return "<!-- Unable to load " . $src . "-->";
}

В вашем коде n без необходимости закрытия блоков с помощью ?> вы можете просто использовать:

echo js_link("jquery/1.6/main.js");

Ответ 4

У Pekka есть правильный ответ (отсюда мой ответ на этот вопрос - Community Wiki): Используйте src, а не href, чтобы указать файл.

Относительно:

Когда я пробую это так:

<script type="text/javascript">
    document.write('<script type="text/javascript" src="datetimepicker_css.js"></script>');
</script>

первый тег в функции document.write закрывается
Каков правильный способ сделать это?

Вы не хотите или нуждаетесь document.write для этого, но на всякий случай do нужно поместить символы </script> внутри тега script по какой-то другой причине: вы сделайте это, убедившись, что анализатор HTML (который не понимает JavaScript) не видит литерала </script>. Есть несколько способов сделать это. Один из способов - выйти из /, даже если вам не нужно:

<script type='text/javascript'>
alert("<\/script>"); // Works, HTML parser doesn't see this as a closing script tag
//      ^--- note the seemingly-unnecessary backslash
</script>

Или, если вы чувствуете себя более параноидально:

<script type='text/javascript'>
alert("</scr" + "ipt>"); // Works, HTML parser doesn't see this as a closing script tag
</script>

... так как в каждом случае JavaScript видит строку как </script>, но парсер HTML не делает.

Ответ 5

В этом отношении нет разницы между выводом HTML PHP и обычной HTML-страницей.

Вам определенно не нужно делать document.write. Ваш JS не связан с вашим PHP, поэтому в первом примере должна быть некоторая другая ошибка (например, путь к файлу).

На боковой ноте у вас будут проблемы с использованием </script> в script. Парсер HTML видит закрывающий тег script при сканировании JS до его синтаксического анализа и запутывается. Вы видите, что люди делают такие вещи, как '<'+'/script' по этой причине.

Edit:

Как T.J. Кроудер указал, на самом деле вам нужно изменить 'href на src в теге <script>. К сожалению, на самом деле Пекка указал на это в своем ответе, поэтому на самом деле добавление его здесь совершенно излишне.

Ответ 6

Скорее всего, что путь к file.js со страницы - это не так. до тех пор, пока вы просматриваете страницу и источник просмотра, вы видите тег, его работа, теперь время для отладки, является ли ваш путь слишком относительным, возможно, вам нужно/перед ним.

Ответ 7

Если вы действительно хотите использовать PHP, вы можете использовать

include "file.php";

или

require "file.php";

а затем в файле file.php, используйте heredoc и выполните эхо-код.

file.php contents:
$some_js_code <<<_code
function myFunction()
{
   Alert("Some JS code would go here.");
}
_code;

В верхней части вашего файла PHP вставьте файл, используя либо include, либо require затем в голове (или разделе тела) эхо в

<?php
require "file.php";
?>
<html>
<head>
<?php
echo $some_js_code;
?>
</script>
</head>
<body>
</body>
</html>

По-другому, но он работает. Просто мои $.02...

Ответ 8

Я попробовал это, я получил что-то вроде script type = "text/javascript" src= "createDiv.php? id =" script И в createDiv.php у меня есть documet getElementbyid (imgslide).appendchild(imgslide5).innerHTML = 'php echo $helloworld; ";

И я получил суперману, потому что php в начале createDiv.php Я с ума сходила в $helloWorld php varible, вырезал и вставлял с html-страницы

Но это не сработало бы. Из whitespaces кто-нибудь расскажет кому-нибудь о проблеме с пробелом, потому что мои реальные пробелы php все еще работают, но не этот