是的,已经被问了很多。不,我经过几天的在线搜索后仍然无法上班。 (还有:是的,我还是很新的php和很多复制/粘贴编码器)。我在PHP中有一个名为EP的数组。我洗了EP。然后我需要传递到javascript数组的EP的混洗值。
我在这里查看了所有答案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);
我需要在main.js中使用这个混洗数组(以洗牌顺序),所以我可以用jqplot在图形中显示它。 我用过这个,但是整个js文件基本上停止了工作
var arrayFromPHP = "<?php echo json_encode($EP); ?>";
alert( $.toJSON(arrayFromPHP) );
我尝试了以下操作,但警告说“未定义”
$.getJSON("data.php",function($EP){
alert( $.toJSON($EP) );
});
有人可以指出我的错误吗?
答案 0 :(得分:2)
那会转换你的数组
<?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>
答案 1 :(得分:0)
好的,你现在正在做的是:
将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)
将字符串转换为数组。
因此罗马有多条道路,您可自行选择所需的选项。