【问题标题】:Access php array variable (from ajax call) in javascript在javascript中访问php数组变量(来自ajax调用)
【发布时间】:2012-04-16 13:33:22
【问题描述】:

我无法访问在 php 中创建的数组,以便在 javascript 块中使用。 我知道

<?php echo json_encode($myArray); ?>

但我没有得到任何结果。

我有一个“index.html”文件,我尝试通过 javascript 访问数组。 html 页面存在于下拉菜单中。当用户在该下拉菜单中选择一个项目时,所选项目将用作从数据库中检索数据的参数。

“ajax.js”文件包含执行“retrieve.php”文件的代码,该文件从数据库内容构造数组(“$myArray”)。所以数组是通过ajax调用来检索的。

我可以从我的 php 文件中“回显”到 javascript 代码吗:

echo 'dataArray = ' . json_encode($data_array) . ';';

并使用该 javascript 变量? 换句话说,如何使用新的“dataArray”变量执行我的 javascript 代码?

为了获得更大的图景:我正在尝试将该数组用于“Google 图表”,为此我需要使用 javascript 来显示图表。 我可以查询所有数据并将其放入 php 数组中,但我无法使用 javascript 将其正确传输到我的 html 页面并重新加载图表。

编辑:我使用 ajax 调用 no 来重新加载整个页面。

【问题讨论】:

  • 您是否尝试从 AJAX 调用中获取 JSON 作为响应?
  • 首先,你不能访问javascript中的任何php变量。

标签: php javascript mysql ajax google-visualization


【解决方案1】:

你应该写这个而不是" echo 'dataArray = ' . json_encode($data_array) . ';'; "—— "echo json_encode($data_array)"
然后在客户端使用JSON.parse(response) 解释它,其中响应您从服务器收到的响应(json)

【讨论】:

  • 谢谢!我设法让它工作,通过在我的xmlhttp.onreadystatechange 函数中使用JSON.parse 并提供 JSON 数据来绘制更新的图表。我不确定这是否是最好的方法,或者我是否应该选择使用 jQuery。
【解决方案2】:

我发现最好的方法是这样的:

客户端代码:

<script>
    var phpdata = <?=json_encode($jsData)?>;
</script>

服务器代码:

$jsData = '';
$jsData->first = $first;
$jsData->second = $second_array;

客户端使用:

alert(phpdata.second[1]);

编辑:

要使用 AJAX 从 php 获取数组,请使用 jQuery http://api.jquery.com/jQuery.getJSON/

客户端:

var stored_array;
$.getJSON(url, function(data){
    stored_array = data;
    // run any other code you wish to run after getting the array.
});

服务器端:

print(json_encode($array));

这将获得一个 json 编码的变量并将其存储以供您使用。

【讨论】:

  • 在AJAX调用过程中构造'$jsData'变量,php能否正确输出?
  • 不完全确定您打算如何做到这一点。您是否正在进行 ajax 调用以获取数组,然后运行?还是首先渲染页面时有数组?
  • 最初用户必须选择一些东西(这里:从下拉列表中),然后我进行 ajax 调用来获取数组,然后我将绘制图表。当用户从下拉列表中选择另一个项目时,我想更新图表。
  • 谢谢,我会检查一下 jQuery 替代方案,看看它是否比在我的 xmlhttp.onreadystatechange 方法中解析响应更好。
【解决方案3】:

是的,你可以通过分配上面的 json_encode 函数来使用这个 php 数组

如果数组是关联数组或php中使用的对象,则可以将其用作关联数组,如果是非关联数组,则可以将其用作普通数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2019-03-24
    • 2019-09-07
    • 2021-02-19
    相关资源
    最近更新 更多