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!

3
  • If it is in int, than you would not want the quotes, so you would remove them in the first code sample. Commented Jan 8, 2012 at 5: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.). Commented Jan 8, 2012 at 5:50
  • 1
    This question has been asked so many times. The best and safest way to do it is json_encode. Commented Jan 8, 2012 at 13:32

6 Answers 6

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.

Sign up to request clarification or add additional context in comments.

3 Comments

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.
@LucyWeatherford Glad I could help. Please click the checkmark to the left of this post.
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
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; ?> ";

Comments

0

For a general solution, use this:

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

1 Comment

There's no need for JSON.parse() or addslashes() since all JSON values are by definition valid JavaScript literals.
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!

Comments

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;

1 Comment

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.
-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.

1 Comment

The first has quotes around the value and the second does not.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.