问题描述
直到最近,我一直使用以 $ 开头的javascript变量名称来表示变量包含jQuery值,即:$buttons = $( 'button' );
但是,两天前,我开始当我将页面加载到最新版本的Chrome中时尝试执行此错误操作:
Notice: Undefined variable: buttons
500 Internal Server Error - ContextErrorException
Stack Trace
in src/AppBundle/Controller/pages/myVideos.php at line 6086 -
6086. function button_Click( This ) {
6087. var $buttons = $( 'button' );
6088. } // End of button_Click( This ) function.
但是,如果我从按钮变量声明/赋值中删除 $ ,则不会发生此错误。
对此我感到奇怪的是,无论我是否在按钮前使用 $ ,在同一页面中,我在使用前导 $的其他函数中还有很多其他变量声明,但它们不会产生这些错误,这是一个示例:
function ytPictureSelect_Click() {
const ELEMENT_PATH_URI = 'tr:first>td.webvideourlURI>span';
const ELEMENT_PATH_PICTURE = 'tr:eq(1)>td.webvideourlPicture';
var This = ( ( this.tagName === 'TD' )
? this
: event.target );
var $This = $( This );
var $element = $This.closest( 'table' );
var $table = $element.parent().closest( 'table' );
var $webvideourlURI = $table.find( ELEMENT_PATH_URI );
var youTube = ( $webvideourlURI.attr( 'youTube' ) === 'true' );
var embedded = ( $webvideourlURI.attr( 'embed' ) === 'true' );
var ytId = $webvideourlURI.attr( 'ytId' );
var $webvideourlPictures = $table.find( ELEMENT_PATH_PICTURE )
.children( 'textarea,span' );
:
} // End of ytPictureSelect_Click() function.
任何人都知道为什么buttonClick函数不喜欢 前导 $ ,但是使用此命名约定的所有其他函数都很好吗?
更新:
我正在使用Symfony ver 2.8和PHP创建页面,将页面放入数组中,然后将数组的内容发送到浏览器,如下所示,减去实际发送页面的代码:
$strMAINs[] = <<<"MAIN"
<script>
function button_Click( This ) {
var $buttons = $( 'button' );
} // End of button_Click( This )
</script>
MAIN;
上面的代码是我正在谈论的错误的根源,还有另一个类似的语句创建了另一个起作用的函数,即使它具有$前缀变量也是如此。
谢谢
解决方法
charlietfl,关于这是一个PHP错误,是正确的。我的第二个回复详细说明了正在发生的事情。
为了使这些替换更清楚,我使用$ {php-variable-name},但这只是一个约定,据我所知,没有办法强制使用$ {。 ..}与$。太糟糕了,因为当我忘记从双引号切换到单引号时,它会严重破坏我的jQuery语句。