這篇文章主要介紹了ThinkPHP控制器里javascript代碼不能執行的解決方法,采用ThinkPHP的<literal>標簽來解決javascript標簽被解析的問題,是非常實用的技巧,需要的朋友可以參考下
本文實例講述了ThinkPHP控制器里javascript代碼不能執行的解決方法。分享給大家供大家參考。具體方法如下:
這里實例分析一下thinkphp在控制器里的網頁特效代碼不能執行解決方法,就拿“退出”這一項來說吧,我的“退出系統”鏈接是寫到左邊的框架里的,用js動態生成的。也就是說,沒法通過鏈接里的target來指定。
復制代碼代碼如下:
$this->assign('jumpurl',__url__.'/login');<br>$this->success("注銷成功!");
這樣寫的話,要跳轉的頁面就顯示在了右框架里了,把js代碼寫到url里面不行,我把這兩行代碼注釋掉了。直接用:
復制代碼代碼如下:
echo "<script>window.top.location.href='$url';</script>";
這樣也不行,一方面url里面沒法用__app__這些常量,另一方面,最后執行出來的結果是竟是把<script>標簽去掉,剩下的直接輸出!
復制代碼代碼如下:
(window.top.location.href='index/login';)
我查了action類里的success函數,沒有找到相關的參數。
后來突然想到一個問題,tp里的標簽都是以尖括號(<>)來包含的,我在控制器里寫的<script>是不是被當作標簽給解析了呢?于是我就重新寫了第二段代碼:
復制代碼代碼如下:
echo '<literal><script>alert("退出成功");top.location.href="login";</script></literal>';
這樣就行了。
希望本文所述對大家的ThinkPHP框架程序設計有所幫助。