摘要:为什么呢官网的截图是这么说的如果要在模板中调用,就采用的方式。我排查很久,终于明白,原来是因为外部不能直接获取模板绑定的变量值。可以实现外部获取模板中绑定的变量值。实属原创,如有错误,敬请指教
我是一只前端,最近初学thinkphp,刚遇到一个问题,觉得值得分享一下。欢迎吐槽 ~
场景是这样的:
我要用JS调用Controller里面的某个方法获取json数据,我便使用thinkphp的U方法,发现一直报错。
首先,我们先弄清楚thinkphp的U方法。
thinkphp函数详解-U方法
代码是这样的:
//common.js里ajax获取远程数据 remote: "{:U("Equipment/a")}?q=%QUERY "
报错是这个:
很明显是{:U()} 这个方式不能被正确解析。为什么呢?
thinkphp官网的截图是这么说的:
如果要在模板中调用,就采用 {:U( )}的方式。
我排查很久,终于明白,原来是因为外部JS不能直接获取模板绑定的变量值。上面中U方法详解中有讲到,在模板中(即view)采用{:U( )}的方式,但是,前端的编码规范是把JS/CSS独立出来,尽量不要放在HTML代码里(HTML代码在view里),于是我就放在public里。然后便出现了上述出现的问题。模板只是display了那个HTML,不包括我的外部文件,外部JS没有被渲染,thinkphp目前也没有机制去解决这个引入外部文件渲染问题。
可以用这种方法来解决。
我在view模板里,用一个隐藏的input,然后value里面设置我要的参数
然后在JS里面获取改input的value,然在组装好自己需要跳转的URL
var aUrl = $("#a").val(); var aUrlP = aUrl + "?q=%QUERY"; remote: aUrlP;
这样就好了。可以实现外部JS获取模板中绑定的变量值。
我觉得方法虽然行得通,但是还是会出现代码冗余,期待有更好版本的TP出现。
实属原创,如有错误,敬请指教!!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/86378.html
摘要:在此之前我们已经编写了的首页视图,并且配置了和模板,让能够正确地处理请求并返回合适的响应。正确引入了静态文件后样式显示正常了。在真正的博客首页视图追梦人物的博客的评论区留言。更多教程,请访问追梦人物的博客。 在此之前我们已经编写了 Blog 的首页视图,并且配置了 URL 和模板,让 Django 能够正确地处理 HTTP 请求并返回合适的 HTTP 响应。不过我们仅仅在首页返回了一句...
摘要:对比常量声明与声明常量声明与声明,都是块级声明。最后一点全局块级绑定与不同于的另一个方面是在全局作用域上的表现。块级绑定新的最佳实践在的发展阶段,被广泛认可的变量声明方式是默认情况下应当使用而不是。总结与块级绑定将词法作用域引入。 var变量与变量提升 使用var关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内,则被视为在全局作用域的顶...
摘要:跨线程组之间变量不共享,即使在线程组最外层设置也不支持,解决方案通过后置处理器后置处理程序,将变量设置属性变为全局的来解决通过后置处理器获取正则表达式提取的变量值,处理器获取提取的变量值有以下两种写法写法一脚本内容写如下代码打印日志写 1、跨线程组之间变量不共享,即使在线程组最外层设置也不支...
摘要:大多数模板实现原理基本一致模板字符串首先通过各种手段剥离出普通字符串和模板语法字符串生成抽象语法树然后针对模板语法片段进行编译,期间模板变量均去引擎输入的变量中查找模板语法片段生成出普通片段,与原始普通字符串进行拼接输出。 前端模板的发展 模板可以说是前端开发最常接触的工具之一。将页面固定不变的内容抽出成模板,服务端返回的动态数据装填到模板中预留的坑位,最后组装成完整的页面html字符...
阅读 3745·2021-08-30 09:47
阅读 3608·2019-08-30 15:56
阅读 652·2019-08-30 14:18
阅读 683·2019-08-29 16:17
阅读 2049·2019-08-29 11:07
阅读 625·2019-08-26 13:53
阅读 3420·2019-08-26 10:26
阅读 2468·2019-08-23 18:30