将javascript数组整理到javascript数组
是的,它被问了很多。不,我仍然无法在网上搜索几天后继续工作。 (另外:是的,我还是很新的PHP和复制/粘贴编码器)。我在PHP中有一个名为EP的数组。我洗牌EP。然后我需要将EP的混洗值传递给一个javascript数组。将javascript数组整理到javascript数组
我检查了这里Convert php array to Javascript所有的答案,但没有更迭: Spudley的答案用在一个文件中PHP和JavaScript,而我使用的是单独的文件(的index.php,data.php,main.js)。如果我使用Eric的答复的NetBeans告诉我,“预期操作性却发现..”
阵列位于data.php:
$EP = array(30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220);
shuffle($EP);
我需要这个洗牌阵列(在洗牌后的顺序)在我的主.js,所以我可以用jqplot在一个图表中显示它。 我用这个,但随后的整个js文件基本上停止工作
var arrayFromPHP = "<?php echo json_encode($EP); ?>";
alert($.toJSON(arrayFromPHP));
和我尝试以下,但警告说“未定义”
$.getJSON("data.php",function($EP){
alert($.toJSON($EP));
});
有人能指出我的错误?
,将转换您的阵列
<?php
$EP = array(30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220);
echo '<script>
var ep = [ '. implode(' , ', $EP) .' ];
</script>
';
?>
如果你想使用它的.js文件中(很小心与缓存),你必须编辑.htaccess文件
<FilesMatch "\.js$">
SetHandler application/x-httpd-php
Header set Content-type "application/javascript"
</FilesMatch>
为了防止缓存JS文件,编辑.htaccess文件
<FilesMatch "\.js$>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</FilesMatch>
感谢您的回复。如果你说“对缓存非常小心”,由于我的知识水平有限,我有点犹豫...... – ShariDB 2015-03-19 11:57:38
每次调用js文件时,您都可以添加一个参数,每次调用它时都会创建一个新链接,像http://..../file.js?timestamp = – 2015-03-19 12:40:18
或在.htaccess中禁用cahce(编辑) – 2015-03-19 12:43:04
还好你现在正在做的是以下几点:
将JSON对象回复为javascript变量。唯一的问题是你用引号包围它。所以不是它的一个字符串。
如果你看看源代码,你会看到
<script type="text/javascript">
var arrayFromPHP = "[110,80,190,60,160,120,150,40,220,170,30,130,200,180,90,70,50,210,100,140]";
alert($.toJSON(arrayFromPHP));
</script>
你需要做的是
var arrayFromPHP = <?php echo json_encode($EP); ?>;
不带引号你会得到一个完全合格的阵列与实例您能行得通。
现在,如果您希望将其作为JSON格式,请保持原样,不需要使用jquery将其转换为JSON,因为它已经是JSON字符串。你可以直接传递它。
一切都取决于你的需要。 JSON字符串或完全限定数组。
如果选择保留引号以获取完全限定数组,则还可以通过对字符串执行JSON.parse(arrayFromPHP)
将字符串转换为数组。
所以罗马有多条公路,它由您决定选择您需要的选项。
谢谢Michael。如果我写var arrayFromPHP = ; Netbeans说这是不正确的代码(预计操作数,但发现 ShariDB 2015-03-19 12:01:14
这是因为netbeans预计JavaScript代码和probaly无法处理嵌套的代码。如果它在一个.php文件中,php解析器将完成它的工作。运行它,让整洁的人闭嘴。 – Tschallacka 2015-03-19 12:02:43
[将php数组转换为Javascript]的可能重复(http://stackoverflow.com/questions/5618925/convert-php-array-to-javascript) – Naruto 2015-03-19 10:59:37
您无法在js文件中运行php代码 – charlietfl 2015-03-19 11:02:09
您无法在js文件中获取php变量;将值赋给全局的javascript变量在php文件中并得到js文件 – 2015-03-19 11:03:26