2013-01-25 58 views
1

我犯了一些愚蠢的错误,但不能解决我所做的。Javascript语法错误与嵌入的PHP代码

我试图检验合格从PHP变量的JavaScript,如果它是一个数组,json_encode

我的文件是一个PHP文件即.PHP

代码的PHP线,这似乎是导致我已添加到原始PHP的错误,它工作正常

<?php 

$php_var = 'lol'; 
$php_array = array(); 
$php_array["lady"] = "mary"; 
$php_array["gent"] = "joseph"; 
echo is_array($php_array) ? json_encode($php_array) : $php_array; // same as faulty line in javascript 
?> 

<html> 
<body> 

<script type="text/javascript" charset="utf-8"> 

var php_var = "<?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo $php_var;}; ?>"; 
document.write(php_var + ' ifElse<br>'); 

// THE FOLLOWING LINE GIVES Uncaught SyntaxError: Unexpected identifier 
var php_var2 = "<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>"; 

document.write (php_var2 + ' EitherOR<br>'); 

alert(php_var + php_array); 

</script> 
<h1> Testing Jscript variables</h1> 
</body> 
</html> 
+3

***什么***错误? – dualed

+2

JSON包含双引号开头,这是打破你的JS。 – Blender

+1

我想这是因为JSON字符串中的引号。删除周围的引号。 – VisioN

回答

2

正如你所指定的错误是:

var php_var2 = "<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>";

该错误可能是由于您使用双引号("")使用单引号('')在Javascript。

这可以解决您的错误: var php_var2 = '<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>';

或者你也可以直接使用eval() JSON字符串创建的Javascript Object

http://jsfiddle.net/jduGp/

+0

感谢所有意见/答案 - 单引号解决了它。我已经了解了更多关于PHP和Javascript的接口。 – mcl

0

试试这个代码。如下所示更换两条线。

var php_var = <?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo $php_var;}; ?>; 

var php_var2 = <?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>; 
0

我做了这样的

<?php 

$php_var = 'lol'; 
$php_array = array(); 
$php_array["lady"] = "mary"; 
$php_array["gent"] = "joseph"; 
?> 

<html> 
<body> 

<script type="text/javascript" charset="utf-8"> 

var php_var = <?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo '"' . $php_var . '"';} ?>; 
document.write(php_var + ' ifElse<br>'); 

// THE FOLLOWING LINE GIVES Uncaught SyntaxError: Unexpected identifier 
var php_var2 = <?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>; 

document.write (php_var2 + ' EitherOR<br>'); 

alert(php_var); 

</script> 
<h1> Testing Jscript variables</h1> 
</body> 
</html> 

不知道为什么你要警惕了php_array时,JavaScript是不知道的变量。除非输出字符串,否则不需要引号。如果你在对象周围放置引号,JavaScript会认为它是一个字符串。

+0

当我尝试它没有引号它给了以下'未捕获的ReferenceError:大声笑未定义' – mcl

+0

当我从外部大括号中删除引号:var php_var2 = <?php echo is_array($ php_array)? json_encode($ php_array):$ php_array; ?>; JS似乎很高兴 - 它只是抱怨说php_array是未定义的,这是公平的,因为就JS而言它不是。 –