繁体   English   中英

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调用没有传递变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM