混乱的php数组到javascript数组

时间:2015-03-19 10:54:36

标签: javascript php jquery arrays

是的,已经被问了很多。不,我经过几天的在线搜索后仍然无法上班。 (还有:是的,我还是很新的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) );           
  });

有人可以指出我的错误吗?

2 个答案:

答案 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)将字符串转换为数组。

因此罗马有多条道路,您可自行选择所需的选项。