【问题标题】:Shuffled php array to javascript array将 php 数组改组为 javascript 数组
【发布时间】:2015-03-19 10:54:35
【问题描述】:

是的,它被问了很多。不,经过几天的在线搜索,我仍然无法使用它。 (另外:是的,我对 php 和大部分复制/粘贴编码器仍然很陌生)。我在 PHP 中有一个名为 EP 的数组。我洗了EP。然后我需要将 EP 的洗牌值传递到 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);

我在 main.js 中需要这个打乱的数组(按打乱的顺序),所以我可以用 jqplot 在图表中显示它。 我用了这个,但是整个js文件基本上停止工作了

var arrayFromPHP = "<?php echo json_encode($EP); ?>";
alert( $.toJSON(arrayFromPHP) );

我尝试了以下方法,但警报显示“未定义”

$.getJSON("data.php",function($EP){
        alert( $.toJSON($EP) );           
  });

谁能指出我的错误?

【问题讨论】:

  • 不能在js文件中运行php代码
  • 您无法在侧 js 文件中获取 php 变量;在侧 php 文件中为全局 javascript 变量赋值并获取 js 文件
  • 不知道,谢谢!

标签: javascript php jquery arrays


【解决方案1】:

这将转换你的数组

<?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>

【讨论】:

  • 感谢您的回复。如果您说“对缓存要非常小心”,鉴于我的知识有限,我有点犹豫要不要尝试。
  • 可以在每次调用js文件时添加一个参数,每次调用时都会创建一个新链接,例如http://..../file.js?timestamp=
【解决方案2】:

好的,你现在正在做的事情如下:

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

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

【讨论】:

  • 谢谢迈克尔。如果我写 var arrayFromPHP = ; Netbeans 说这是不正确的代码(预期的操作数,但发现
  • 那是因为 netbeans 需要 javascript 代码并且可能无法处理嵌套代码。如果它在 .php 文件中,则 php 解析器会做它的事情。运行它,让neatbeans 闭嘴。
猜你喜欢
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多