【问题标题】:How to pass an integer value to JS that is in a PHP integer variable?如何将整数值传递给 PHP 整数变量中的 JS?
【发布时间】:2012-01-08 05:45:42
【问题描述】:

我正在尝试将一些变量从 PHP 传递给 JS。

我看到here 对于字符串,以下代码可以工作:

    var str = "<?php echo $x; ?>";

我一直在用这个:

    var var1 = <?= $var1 ?>;

int 我应该使用哪一个?第一个版本总是好的?第二个只是旧形式吗?对于将变量(dif 类型)从 php 传递到 js 的一般说明和说明,我很高兴。

谢谢!

【问题讨论】:

  • 如果它在 int 中,那么您将不需要引号,因此您将在第一个代码示例中删除它们。
  • 第二种使用短标签语法,建议某些人不要使用(并且有传言说 PHP 将在未来某个时候放弃默认启用的短标签语法,而某些设置则不会'没有启用它,等等)。
  • 这个问题已经被问过很多次了。最好和最安全的方法是json_encode

标签: php javascript variables


【解决方案1】:

首先,让我们来看看如何在javascript中声明一个变量。

有许多类型的变量,但让我们看看intstring。字符串必须有引号。 Int 没有。

var int = 5;
var string = "hello";

现在,当我们将一个变量从 php 传递到 javascript 时,我们所做的就是将等号后面的值替换为 php 中声明的变量。您提到了回显变量的两种方式。

var str = "<?php echo $phpVariable; ?>";
var str = "<?= $phpVariable ?>";

如果这些变量是int(顺便说一句,包括任何数字,无论是否为整数),php 的打开和关闭标签周围就没有引号。现在,您说您更喜欢使用第二种方法。我真的建议你不要这样做。尽管输入&lt;?= $phpVariable ?&gt; 比输入&lt;?php echo $phpVariable; ?&gt; 容易得多,但并非所有服务器都支持前者,而后者则支持。您可以根据需要使用它,但如果您想移动到服务器,则需要先检查该语法是否允许。

【讨论】:

  • 谢谢!这可以解决问题。到目前为止,我确实只使用了数字,现在我有了第一个字符串,并且也注意到了语法上的差异。
  • @LucyWeatherford 很高兴我能帮上忙。请点击此帖子左侧的复选标记。
  • 另外,我的文本编辑器在每一行的末尾都有; 的问题。知道为什么吗?他说error message - unexpected `';" type - syntax error
【解决方案2】:

嗯, 让我们说在 PHP 中,

$php_int_variable = 5;
$php_string_variable = "Hello";

为了在 javascript 中获取它,如下所示,

var int = 5;
var string = "Hello";

你必须写,

var int = <?php echo $php_int_variable; ?>;
var string = "<?php echo $php_string_variable; ?> ";

【讨论】:

    【解决方案3】:

    对于一般的解决方案,使用这个:

    var data = JSON.parse("<?php echo addslashes(json_encode($data)); ?>");
    

    【讨论】:

    • 不需要JSON.parse()addslashes(),因为根据定义,所有 JSON 值都是有效的 JavaScript 文字。
    【解决方案4】:

    即使是有问题的人,也要走下一条路!

    var str = "<?php echo $x; ?>"; 
    

    这个到字符串!

    var int = parseInt('<?php echo $x; ?>');
    

    这个到 Int!

    【讨论】:

      【解决方案5】:
      var a = parseInt("10") + "<br>";
      var b = parseInt("10.00") + "<br>";
      var c = parseInt("10.33") + "<br>";
      var d = parseInt("34 45 66") + "<br>";
      var e = parseInt(" 60 ") + "<br>";
      var f = parseInt("40 years") + "<br>";
      var g = parseInt("He was 40") + "<br>";
      
      var h = parseInt("10", 10)+ "<br>";
      var i = parseInt("010")+ "<br>";
      var j = parseInt("10", 8)+ "<br>";
      var k = parseInt("0x10")+ "<br>";
      var l = parseInt("10", 16)+ "<br>";
      
      var n = a + b + c + d + e + f + g + "<br>" + h + i + j + k +l;
      

      【讨论】:

      • 什么?最初的问题已经超过五年了,与您刚刚发布的答案完全无关。我猜你犯了一个错误,我建议你删除这个答案。
      【解决方案6】:

      这两个版本是等价的。当您的 php.ini 中启用了 short_open_tag 选项时,将启用第二个版本。在 php 5.4 中,即使没有启用 short_open_tag,&lt;?= 也将可用。

      【讨论】:

      • 第一个值有引号,第二个没有。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多