【问题标题】:How can I use a cake element in to jquery?如何在 jquery 中使用蛋糕元素?
【发布时间】:2020-07-02 22:26:22
【问题描述】:

我正在使用 CakePHP 3,让我告诉你我想要做什么,是使用屏幕宽度条件在 div 中显示蛋糕元素,它会引发以下错误 Uncaught SyntaxError: Unexpected identifier。我已经告诉你,语法没有任何反应,没有逗号、句号等。我错过了。

我需要知道的是将元素助手放入jquery中的正确方法这个:<?= $ this->element('Search/Legislacion/form-search-legis') ?>

<script>
    $(document).ready(function(){
        var width = $(document).width(),
            search_form_legis = "<?= $this->element('Search/Legislacion/form-search-legis') ?>"; 

        // console.log(width);

        if(width >= 576){
            $('#searchDesktop').html(search_form_legis);
        }
    });
</script>

【问题讨论】:

  • 你的语法看起来是正确的,所以如果你没有得到想要的输出,那么你的 PHP 函数可能有问题$this-&gt;element()
  • 正是,这就是为什么我问是否有人知道在 jquery 中放置等效函数的正确方法

标签: javascript php jquery cakephp-3.x


【解决方案1】:

你不能只是将 HTML 转储到 JavaScript 字符串中,一旦出现第一个单引号/双引号,它就会破坏事物,因为这会关闭字符串,只需查看正在传递的页面的源代码,会有这样的:

search_form_legis = "<form method="POST" action="/url">...";

显然这是语法错误。

如果你想把来自PHP的数据放到JavaScript中,那么建议使用json_encode(),它会将数据转换成正确的格式。

var search_form_legis = <?= json_encode(
    $this->element('Search/Legislacion/form-search-legis')
) ?>;

一个字符串,如你的例子,将自动被引用和转义,即你甚至不需要在它周围加上引号,它看起来像这样:

var search_form_legis = "<form method=\"POST\" action=\"/url\">...";

话虽如此,如果根本没有完全不输出内容的充分理由,那么您可能需要考虑使用 CSS 规则来隐藏/显示它,类似于以下内容:

#searchDesktop {
    display: none;
}

@media (min-width: 576px) {
    #searchDesktop {
        display: block;
    }
}

【讨论】:

  • 你使用json_encode()方法是绝对正确的,非常感谢你,这个方法解决了你说的问题。在我的情况下,CSS 不是一个选项,因为我必须以两种不同的屏幕尺寸和不同的样式显示此表单,而且我有重复 id 的问题!所以我选择使用jQuery,再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多