未捕获的SyntaxError:php的意外标识符
当我将数组值放入脚本变量中时,下面的代码在没有php的情况下运行良好。但在php it console.log未捕获的SyntaxError:php的意外标识符,php,jquery,jquery-ui,syntax-error,Php,Jquery,Jquery Ui,Syntax Error,当我将数组值放入脚本变量中时,下面的代码在没有php的情况下运行良好。但在php it console.log未捕获的语法错误:意外标识符。请帮我找出我的错误 <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <s
未捕获的语法错误:意外标识符
。请帮我找出我的错误
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<?php
$availableName = array("ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell");
$availableName = json_encode($availableName);
echo "<script type=\"text/javascript\">";
echo " $(function() {";
echo " var allTags =" . $availableName;
echo " $( \"#tags\" ).autocomplete({";
echo " source: allTags";
echo " }); }); </script>";
?>
</head>
<body>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
</body>
</html>
标签:
我认为这是因为$(function()
和$(\“\35; tags\”)
php将它作为变量读取,然后出现错误
例如:
$abc = "test";
echo "$abc123"; //test123
要修复它,请将双引号
“
更改为单引号”
我认为这是因为$(function()
和$(\“#tags\”)
php将它作为变量读取,然后出现错误
例如:
$abc = "test";
echo "$abc123"; //test123
要解决此问题,请将双引号
“
更改为单引号”
在这种情况下,$应该不会有任何损害。如果我没有弄错,则在浏览器中执行输出时会出现问题(因此是一个JavaScript错误,而不是PHP错误)
您将JavaScript全部放在一行中,因此需要在末尾添加分号(在“Haskel”之后)
而不是
echo“var allTags=”.$availableName;
试试这个:
echo“var allTags=”.$availableName.;”;
在这种情况下,$应该不会有什么坏处。如果我答对了,在浏览器中执行输出时就会出现问题(因此是JavaScript错误,而不是PHP错误)
您将JavaScript全部放在一行中,因此需要在末尾添加分号(在“Haskel”之后)
而不是
echo“var allTags=”.$availableName;
试试这个:
echo“var allTags=”.$availableName.;”;
我认为这可能与许多引号转义不当有关。或者,我可能会将其编码如下,这样可以减少PHP到javascript的翻译混乱,从而提供更紧凑、可读和简洁的附加好处
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script type="text/javascript">
$(function() {
var allTags = <?php echo json_encode(array("ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell")); ?>;
$( "#tags" ).autocomplete({'source': allTags});
});
</script>
$(函数(){
var-allTags=;
$(“#标记”).autocomplete({'source':allTags});
});
您还会注意到,我在
autocomplete
options对象中的object键周围加了引号。对于较新的浏览器,这可能是一种过时的做法;但是,较旧的浏览器需要引用对象键才能正确解析json对象。我发现这仍然是一种很好的做法,因为它有助于避免混淆键我想这可能与许多引号转义不当有关。或者,我可能会将其编码如下,这样可以减少从PHP到javascript的翻译混乱,从而提供更紧凑、可读和简洁的附加好处
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script type="text/javascript">
$(function() {
var allTags = <?php echo json_encode(array("ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell")); ?>;
$( "#tags" ).autocomplete({'source': allTags});
});
</script>
$(函数(){
var-allTags=;
$(“#标记”).autocomplete({'source':allTags});
});
您还会注意到,我在
autocomplete
options对象中的object键周围加了引号。对于较新的浏览器,这可能是一种过时的做法;但是,较旧的浏览器需要引用对象键才能正确解析json对象。我发现这仍然是一种很好的做法,因为它有助于避免混淆键快速浏览时会看到一些变量。PHP是一种服务器端语言。浏览器JavaScript是客户端语言。它们根本不进行交互。如果您有JavaScript语法错误,您至少应该查看一下视图源代码,看看您的JavaScript代码是什么样子。\“text/JavaScript\”这就是问题所在。PHP是一种服务器端语言,而不是用单个cuotes替换。浏览器JavaScript是客户端语言。它们根本不进行交互。如果您有JavaScript语法错误,您至少应该查看一下视图源代码,看看您的JavaScript代码是什么样子的。\“text/JavaScript\”这就是问题所在。我没有用单个cuotes替换scaping,而是在PHPFiddle中测试了它,它似乎没有任何错误。我只是在PHPFiddle中测试了它,它似乎没有任何错误。