0

I'm trying to pass some variables from PHP to JS.

I saw here that for strings the following code would work:

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

I've been using this:

    var var1 = <?= $var1 ?>;

Which one should I use for int? the first version is always good? Is the second one just an old form? I'd be happy for a clarification and instruction on passing variables (dif types) from php to js in general.

Thanks!

Community
  • 1
  • 1
Lucy Weatherford
  • 5,452
  • 16
  • 50
  • 76
  • If it is in int, than you would not want the quotes, so you would remove them in the first code sample. – epascarello Jan 08 '12 at 05:48
  • The second uses shorttags syntax, which is suggested not to be used by some (and there have been rumblings that PHP will drop default shorttag syntax being enabled at some point in the future, and some setups don't have it enabled, etc.). – Jared Farrish Jan 08 '12 at 05:50
  • 1
    This question has been asked so many times. The best and safest way to do it is `json_encode`. – igorw Jan 08 '12 at 13:32

6 Answers6

6

First of all, lets go over how to declare a variable in javascript.

There are many types of variables, but lets go over int and string. Strings have to have quotation marks around the. Int's don't.

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

Now when we are passing a variable from php to javascript, all we are doing is replacing the value after the equal sign with a variable declared in php. You mentioned the two ways for echoing a variable.

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

If these variables were int (which by the way includes any number, whether integer or not), there would be no quotation marks around the php open and close tags. Now, you said you prefer using the second method. I would really advise you not to. Even though it is a lot easier to type <?= $phpVariable ?> than <?php echo $phpVariable; ?>, the former one isn't supported on all servers, whereas the latter one is. You can use it if you want, but if you ever want to move to a server, you need to check if that syntex is allowed first.

blake305
  • 2,196
  • 3
  • 23
  • 52
  • 1
    thanks! this clears up things. Until now I did use only numbers, now I have the first string, and noticed the difference in syntax too. – Lucy Weatherford Jan 08 '12 at 06:08
  • 1
    @LucyWeatherford Glad I could help. Please click the checkmark to the left of this post. – blake305 Jan 08 '12 at 06:09
  • Also, my text editor has an issue with the `;` in the end of each of these lines. Any idea why? he says `error message - unexpected \`';" ` `type - syntax error` – Lucy Weatherford Jan 08 '12 at 06:09
2

Well, Lets say in PHP,

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

For getting it in javascript as like following,

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

You have to write,

var int = <?php echo $php_int_variable; ?>;
var string = "<?php echo $php_string_variable; ?> ";
Nuhil Mehdy
  • 2,424
  • 1
  • 21
  • 23
0

EVEN Anyone with problems , make the Next Way !

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

this to string !

and

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

this to Int!

Alisom Martins
  • 688
  • 9
  • 16
0
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;
YakovL
  • 7,557
  • 12
  • 62
  • 102
AL MaMun
  • 65
  • 7
  • WhAT? The original question is over five years old and has absolutely nothing to do with the answer you just posted. I'm guessing you made a mistake, and I'd suggest you remove this answer. – sheng Nov 13 '18 at 18:24
0

For a general solution, use this:

var data = JSON.parse("<?php echo addslashes(json_encode($data)); ?>");
Niet the Dark Absol
  • 320,036
  • 81
  • 464
  • 592
-1

The two versions are equivalent. The 2nd version is enabled when the short_open_tag option is enabled in your php.ini. In php 5.4, the <?= will be available even without short_open_tag enabled.

gview
  • 14,876
  • 3
  • 46
  • 51