2013-01-25 54 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而言它不是。 –