【问题标题】:Use array values from PHP in Javascript [duplicate]在Javascript中使用来自PHP的数组值[重复]
【发布时间】:2012-06-29 16:40:46
【问题描述】:

从本地数据库检索一些值后,我想在页面上执行 javascript 函数。然而,一旦 PHP 代码在我的 javascript 中,javascript 函数甚至不会首先运行。如果我将 PHP 代码分开并单独运行 PHP 代码,它可以正常工作,javascript 代码也一样。这是我的代码:

<?
mysql_connect("127.0.0.1:3307", "username", "password") or die ("Error fetching value from database.");
mysql_select_db("ccmalumni");
$result = mysql_query("SELECT DISTINCT value FROM ccm_bp_xprofile_data WHERE field_id = 16") or die ("What da heck");
$states = db_result_array_values($result);
echo $states[0];
mysql_close();

function db_result_array_values($result) { 
for ($array = array(); $row = mysql_fetch_row($result); isset($row[1]) ? $array[$row[1]] = $row[0] : $array[] = $row[0]); 
return $array; }
?>

var present = <? echo json_encode($states); ?>;

请问,我做错了什么?可以查看完整代码here

谢谢。

【问题讨论】:

  • &lt;script&gt;&lt;/script&gt; 标签之间声明你的变量
  • 您是否在浏览器中使用 javascript 控制台进行调试?加载页面时是否显示任何解析错误?
  • 还有什么在echo $states[0]; 行中回显?它是有效的javascript吗?

标签: php javascript jquery json


【解决方案1】:

json_encode 会以 javascript 可以理解的形式输出 json 字符串,所以基本修复如下;

var darr = <? echo json_encode($states); ?>;  //Already readable JSON
var present = darr ; 

【讨论】:

  • 您可以尝试在浏览器上查看源代码并查看打印出来的内容
  • 实际上,这是一个更新的修改,我的原始代码只有var present = &lt;? echo json_encode($states); ?&gt;(谁想做额外的编码)。我通过查看源代码解决了这个问题,我发现我的所有 PHP 代码都没有被处理。问题是因为我以&lt;? 而不是&lt;? php 开始我的代码。感谢您的帮助!
【解决方案2】:

$.parseJSON() 将字符串解析为 javascript 对象。 var darr 已经是一个对象,不是字符串,因此不应传递给 $.parseJSON()

$.parseJSON() API Docs

【讨论】:

    【解决方案3】:

    如果您想从服务器获取数据到客户端,我认为最好的方法是执行 ajax 请求。

    因为您不必将服务器端与客户端混合使用
    (使您的代码更具可读性、易于理解等)

    这里有一个简短的描述如何使用 jQuery:https://stackoverflow.com/a/415894/1067061

    希望对你有帮助,祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 2019-03-24
      • 2016-06-01
      相关资源
      最近更新 更多