在javascript中捕获php mysql变量

时间:2014-04-10 07:27:20

标签: javascript php mysql

我想知道如何在javascript中捕获mysql行,我试着这样做:

    var  x = <?php 
    mysql_connect(Not important);
    mysql_select_db(not important);
    $zapytanie = "SELECT (times) FROM dane WHERE email='$email'";
    $idzapytania = mysql_query($zapytanie);
    $wiersz = mysql_fetch_row($idzapytania);
    echo $wiersz[0];
    mysql_close (notimportant);
    ?>;

    alert(x);

但这不起作用。有解决方案吗对不起,如果这个问题似乎很蹩脚,但我不是最好的php / js,但很少有事情要做。

5 个答案:

答案 0 :(得分:2)

如果要将PHP的输出视为javascript中的字符串,则应将PHP的输出括在单引号中。像这样:

var  x = '<?php 
mysql_connect(Not important);
mysql_select_db(not important);
$zapytanie = "SELECT (times) FROM dane WHERE email=\'$email\'";
$idzapytania = mysql_query($zapytanie);
$wiersz = mysql_fetch_row($idzapytania);
echo $wiersz[0];
mysql_close (notimportant);
?>';

或者,替换echo $wiersz[0];

echo "'". $wiersz[0] ."'";

答案 1 :(得分:0)

如果要将数组从PHP传递给jquery / javascript,最好的方法是使用JSON。伪代码:

var x=JSON.parse(<?php echo json_encode($array); ?>);

答案 2 :(得分:0)

<script type="text/javascript">

setVariables('<?php echo $tag_name ?>', '<?php echo $client_id ?>');

</script>

然后在.js文件中创建该函数以利用这些值并执行您需要的操作。

function setVariables(name, id){ var tag_name = name var client_id = id //Operations that need these values. }

答案 3 :(得分:0)

试试这个

<?php 
   mysql_connect(Not important);
   mysql_select_db(not important);
   $zapytanie = "SELECT (times) FROM dane WHERE email='$email'";
   $idzapytania = mysql_query($zapytanie);
   $wiersz = mysql_fetch_row($idzapytania);
   $w=$wiersz[0];
   mysql_close (notimportant);
?>;

<script>
 var  x =<?php echo $w ?> 
 alert(x);
</script>

答案 4 :(得分:0)

将包写入javascript!

就个人而言,每当将初始化数据从PHP传输到客户端时,我发现最好将数据合并到一个数组中,并使用强制转换和json_encode(根据有用的答案)制作最终结构在JavaScript方面很好用且易于使用。这样就可以在整个地方保存回显不同的变量,并自动处理所需的任何类型和转义语法,即用引号包装字符串,或者用字符串反斜杠内部引号。

<?php

$export = array();

mysql_connect(Not important);
mysql_select_db(not important);
$zapytanie = "SELECT (times) FROM dane WHERE email='$email'";
$idzapytania = mysql_query($zapytanie);
$wiersz = mysql_fetch_row($idzapytania);
mysql_close (notimportant);

$export['x'] = !empty($wiersz[0]) ? $wiersz[0] : 'default';

?>
var data = <?php echo json_encode((object) $export); ?>;

显然上面的内容对于一个小值来说有点过分,但是,如果有一个以上的值 - 在进一步编码后很容易发生 - 这将很容易扩展:

$export['x'] = !empty($wiersz[0]) ? $wiersz[0] : 'default';
$export['something_else'] = 54321;

然后你需要做的就是在JavaScript中访问这些值:

data.x
data.something_else


为什么要使用数组以及为什么要转换为对象?

我在PHP端使用关联数组的原因是因为我发现在PHP中写入数组比使用对象更清晰 - 不是->符号的忠实粉丝。在许多PHP版本中,实例化一个数组比一个对象更容易,看起来更像是本机。然后我在写入JavaScript之前转换为一个对象,因为我发现JavaScript中的情况恰恰相反,访问对象而不是数组时读取起来更容易和更好。但这是个人品味。

  

注意:$export数组中定义键时,您应该谨慎遵守标准变量命名约定,即使用camelCase/interCaps或将空格转换为下划线。虽然你可以使用任何字符,甚至空格,但这意味着从JavaScript端访问数据变得更加麻烦。


要记住的另一件事

在JavaScript中设置变量时,pollute the global namespace经常被视为一件坏事。这基本上意味着在运行时的顶层编写变量,将变量附加到全局Object(通常是Window),以便在执行中运行的每一段JavaScript代码都可以访问它们。它被认为是坏的,因为除非您使用可能唯一的变量名称,否则可能会发生与其他代码的冲突,即如果两个代码位都依赖于相同的全局变量。

如果您只是在脚本顶部输出数据var,它将成为全局命名空间的一部分,并且使用像data一样平淡无奇的东西将是避免某些事情的主要示例。对于那些不会被多个编码人员扩展或工作的小项目来说,这可能并不重要,但是养成避免这种情况的习惯总是一个好主意。

您当然可以使用对您的项目更独特的变量名称,例如myProjectData,或者如果你有一个定义你的项目的过度命名空间,例如jQuery,JSON,console;你可以将它附加到例如Project.data

但是,如果您想要更通用的方法,也可以通过将JavaScript代码包装在匿名函数中来实现。

<?php

$export = array();
$export['random_value'] = 'Where\'s my monkey?';

?>

(function( data ){

  /// data will only be available inside this function
  /// or to other sub functions defined inside this function.
  console.log(data.random_value);

})(<?php echo json_encode((object) $export); ?>);

使用上面的代码,您最终应该总是拥有一个很好的值来访问,正确转义和格式化的JavaScript,这些值直接来自PHP,并且不会污染全局命名空间。

  

警告:显然应该注意的是,如果您使用上述匿名包装器方法并调用页面中的任何其他脚本文件,他们将无法访问data除非您以某种方式将对象传递给该代码。这就是为什么人们通常更喜欢为他们的项目设置一个过度拱形的命名空间对象,即MyProject.data。但是,您不一定要这样做 - 由于将所有值捆绑在单个JavaScript对象中的好处 - 因为将其传递给其他代码就像将一个变量作为参数发送到函数即{{1 }}