Yii:javascript 的参数化调用 - 引号问题

Posted

技术标签:

【中文标题】Yii:javascript 的参数化调用 - 引号问题【英文标题】:Yii: parametrized call of javascript - problems with quotes 【发布时间】:2015-05-06 02:20:35 【问题描述】:

我使用的是 Yii 版本 1.1.15。

在视图中我使用 ajaxlink,它的工作原理就像一个魅力:

<?=
  Chtml::ajaxLink(
     '[Help]',
     $this->createUrl('genearal/help'), 
     array(
        'onclick' => '$("#help").dialog("open"); return false;',
        'update' => '#help'), 
     array('id' => 'showHelp')
  );
?>
<div id="help"></div>

由于我有很多 ajaxlink 调用,我想在组件文件夹中编写一个可以调用的函数: MyComponents::help("Help", "general/help", "help", "showHelp");

class MyComponents 
    public static function help($headline, $controller_and_action, $divname, $idname) 
              CHtml::ajaxLink(
                 '[$headline]',
                 $this->createUrl('$controller_and_action'), 
                 array(
                   'onclick' => '$("$divname").dialog("open"); return false;',
                   'update' => '$divname'), 
                 array('id' => '$idname')
              );
    

问题:如果我在浏览器中调用它,我只会得到一个空页面。

我必须用父类扩展 MyComponents 吗?哪一个? (我不这么认为:我测试了 echo CHtml::encode("test") 没有问题。

也许我的报价有问题?

我在谷歌上搜索了几个小时然后放弃了。希望这不是不可能的。

【问题讨论】:

【参考方案1】:

我解决了这个问题。这很简单。 我没有收到错误消息,因此认为 javascript 出了点问题。

在我的控制器中,我不在对象上下文中 - 所以 $this->createUrl(...) 是不可能的。解决办法:

Yii::app()->createUrl(...)

...它就像一个魅力;-)

【讨论】:

以上是关于Yii:javascript 的参数化调用 - 引号问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javascript 中调用实例化类的函数?

参数化查询中的 JavaScript 错误

yii2 框架怎么调用vendor下的第三方

Yii2 403在ajax调用期间被禁止

yii2数据验证

「思考题」54个JavaScript基础知识总结