PHP动态变量作为jQuery选择器


PHP dynamic variable as jQuery selector

经过数小时的沮丧,我终于找到了导致错误的代码行,但现在我需要知道原因。

jQuery抛出此错误:Uncaught Error: Syntax error, unrecognized expression: .

我研究过它,发现这是一个Sizzle错误,当jQuery找不到被引用的选择器时就会发生。正如在SO的其他问题中所建议的那样,这实际上不是我的jQuery代码中的错误,而是在其他地方。

我定义了一个变量作为加载内容的目标元素,并使用PHP动态定义该变量,如下所示:

var $container = $(".<? echo $target ?>");

这不起作用,因为.被标记为无法识别的表达式。然而,用静态字符串替换PHP变量效果很好:

var $container = $(".target");

这对我来说很难找到,因为我无法精确定位引发错误的行,而在浏览器的源代码中,上面的第一行看起来就像第二行。

为什么第一个例子不起作用?这与执行顺序有关吗?而且,如何使用动态变量作为选择器?

您必须使用

<?php echo $test; ?>

或者快捷方式:

<?= $test ?>

在执行此操作之前,您可以尝试trim($target)。如果有效的话,你的变量中可能有一些不需要的空格。

还可以考虑使用json_encode将变量从php传递到javascript。像这样:

var selector = <?php echo json_encode($target); ?>;
var $container = $(selector);

这将允许您不仅传递简单的字符串,还传递更复杂的变量结构(并且具有编码安全性(。

发现我加载的页面没有传递变量$target。在最初的页面上,$target是用一个值初始化的,因此源输出看起来像问题中指定的那样。然而,我为用新数据重新加载页面而进行的ajax调用没有传递变量。