Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中导入php变量_Php_Javascript - Fatal编程技术网

在javascript中导入php变量

在javascript中导入php变量,php,javascript,Php,Javascript,我有一个名为english.php的文件,其中包含大量变量值。$LANG数组的所有部分 示例: $LANG['value_1']=“abc” $LANG['value_2']=“xyz” 然后我有一百万个不同的.php文件使用require_once('english.php') 这很好,但我也使用了很多javascript和jquery插件。它们都有外部的.js文件。如何在javascript中获取$LANG的值,使其在.js文件中可用 我想我需要在.js的顶部添加代码,以便在运行剩余的jav

我有一个名为english.php的文件,其中包含大量变量值。
$LANG
数组的所有部分

示例:

$LANG['value_1']=“abc”

$LANG['value_2']=“xyz”

然后我有一百万个不同的.php文件使用
require_once('english.php')

这很好,但我也使用了很多javascript和jquery插件。它们都有外部的.js文件。如何在javascript中获取
$LANG
的值,使其在.js文件中可用

我想我需要在.js的顶部添加代码,以便在运行剩余的javascript代码之前以某种方式读取.php数据。我完全不知道该怎么做

我已经看到了一些可能的想法,但我真的不想把所有的东西都重写一遍。寻找一个简单的解决方案。有人能帮助这个无知的新手吗

=======根据收到的评论添加了更多信息=======

我现在有一个lang.php,里面有这段代码

<?php
session_cache_limiter('nocache');
session_start();
require_once ($_SESSION['language'].'.php');


$js_out = json_encode($LANG);

?>
<script>
    var LANG = <?php echo $js_out; ?>;
    alert(LANG.value_1);
</script>
<?php
session_cache_limiter('nocache');
session_start();
require_once ($_SESSION['language'].'.php');


$js_out = json_encode($LANG);

?>

var LANG = <?php echo $js_out; ?>;

var LANG=;
警报(LANG.value_1);
当我访问lang.php时,它成功访问english.php并发出“abc”警报

我的问题是,这在添加到其他文件时不起作用

<script type='text/javascript' src='lang.php'></script>
<script>
    alert(LANG.value_1);
</script>

警报(LANG.value_1);
=======编辑以添加解决方案=======

多亏了下面的人的评论,我去掉了lang.php文件中的
,它成功了

我现在有一个lang.php,里面有这段代码

<?php
session_cache_limiter('nocache');
session_start();
require_once ($_SESSION['language'].'.php');


$js_out = json_encode($LANG);

?>
<script>
    var LANG = <?php echo $js_out; ?>;
    alert(LANG.value_1);
</script>
<?php
session_cache_limiter('nocache');
session_start();
require_once ($_SESSION['language'].'.php');


$js_out = json_encode($LANG);

?>

var LANG = <?php echo $js_out; ?>;

var LANG=;

您可以在需要查看javascript中$LANG的文件中使用一个简单的脚本标记来实现这一点

1) 创建一个响应$LANG的javascript表示形式的php文件-让我们称之为LANG.php 它应该像

echo 'var english ="' . $LANG['value_1']  "';";
2) 在html中包含此文件,然后您可以使用变量english等作为普通javascript变量

<script language="javascript" src="http://whatever.com/lang.php"> </script>

试试:


var mydata=;
json\u encode
返回包含json表示的字符串。
我认为正确的做法是:

var foo = "<? echo $LANG['bar']; ?>";
var foo=”“;

在js代码中编写的php代码越少,它就越好、越干净。

您可以在english.php中获得以下代码:

<?php


$LANG['value_1']="abc";
$LANG['value_2']="xyz";

$js_out = json_encode($LANG);

?>
<script>
    var LANG = <?php echo $js_out; ?>;
</script>

var LANG=;

页面加载后,您的javascript就可以看到LANG了。

您可以创建一个PHP文件:

<?php
header('Content-Type: text/javascript');
echo 'var lang = {};';
foreach ($LANG as $key => $value) {
    echo "lang['$key'] = '" . addslashes($value) . "';";
}
?>


删除作为
文本/javascript
文件链接时可能导致语法错误的
标记。

使用
json\u编码
并将数据放在JS可访问的位置。如果不知道你的项目是如何组织的,很难说。为什么JS需要翻译表呢?你不能从JavaScript获得PHP变量,相反。PHP将其变量告知JavaScript。因此,无论您在哪里包含脚本(可能是
标记所在的位置),您都会希望使这些页面成为PHP和echo,或者对脚本执行任何需要执行的操作。如果
english.PHP
中有那么多数据(我假设您正在执行动态区域页面或类似的操作)我建议您对php进行ajax调用,请求一个特定的键列表,而不是将整个内容转储到JavaScript中。可能重复的或@Bergi您不能在.js文件中运行php代码不能在.js文件中运行php代码如果您尝试将php用作JavaScript生成引擎,你需要包含一个php文件,而不是一个真正的js文件,比如foobar.js.php,这是在symfony2框架中处理文件的方式。我认为javascript不支持关联数组,所以
LANG['value\u 1']
会在javascript中工作吗?它是一个json对象,所以你可以像这样访问成员:LANG.value\u 1在原始帖子中查看我的编辑。我添加了更多信息。查看更新的代码:我认为问题在于双脚本标记。php生成包含在中的输出。然后浏览器会将其解释为javascript,我怀疑在遇到时会发生错误,因为它不是有效的javascript。您是对的,在去掉
后,它工作正常。谢谢@RapidWalf-我目前正在尝试基本上这样做。把其他的评论放在一起,得出你的基本观点。现在就试试。请看我在原始帖子中的编辑。我添加了更多信息。适用于我,使用
查看原始帖子中的我的编辑。我添加了更多信息。请参阅原始帖子中的编辑。我添加了更多信息。删除lang.php中的标记。不同文件中的标记是必需的。但是它在lang.php中不是必需的,这就是问题的根源;警报(LANG.value_1);你是对的,删除
就成功了。谢谢-这正是问题所在。现在开始工作!!!!!