yii Ajax链接不起作用

时间:2011-12-05 08:14:07

标签: ajax yii

我使用以下代码放置了Ajax链接:

echo chtml::ajaxLink('GO', 'http://localhost/index.php?r=user/delete', array('method'=>'POST'));

但是,无论将第二个参数作为URL i,e'http://localhost/index.php?r=user/delete'。它在浏览器中生成与当前URL的链接,而不是我刚刚指定的URL。 有什么问题?我怎么能创建AJAX链接?谷歌几个小时但无法解决问题。 任何形式的帮助都非常感谢。

3 个答案:

答案 0 :(得分:3)

首先,您应该始终尝试创建规范化的网址 但我认为你的疑问在于生成/追加的#。如果你去查看yii ajaxLink的来源,你会看到:

public static function ajaxLink($text,$url,$ajaxOptions=array(),$htmlOptions=array())
{
    if(!isset($htmlOptions['href']))
        $htmlOptions['href']='#';
    $ajaxOptions['url']=$url;
    $htmlOptions['ajax']=$ajaxOptions;
    self::clientChange('click',$htmlOptions);
    return self::tag('a',$htmlOptions,$text);
}

因此,如果您未在href数组中设置a标记的htmloptions属性,则会追加#
您还应该了解yii使用jquery,因此如果您查看页面的源代码,您将在底部看到如何使用jquery执行ajax请求,您的实际URL也将在那个剧本。因此ajaxLink中的第三个选项/参数用于jquery的ajax函数的选项。您可以使用此选项创建更好的ajax链接 无论您的网址在您的项目中指向哪个(哪个控制器),都会调用与该网址相关联的操作。

所以无论如何,如果你想要显示网址而不是#,你可以修改你的代码:

echo CHtml::ajaxLink('GO', 'http://localhost/index.php?r=user/delete',
 array('type'=>POST), //there are various other options for jquery ajax
 array('href'=>'http://localhost/index.php?r=user/delete'));

为了制作更好的ajax链接,我建议通过jquery的ajax文档。可以使用success功能选项,让用户知道操作已完成。

希望这有帮助,如果我没有完全回答你的问题,请随时留言。

答案 1 :(得分:1)

你试过了吗?

echo CHtml::ajaxLink('GO', array('/user/delete'), array('method'=>'POST'));

正如ajaxLink documentation建议......?另请参阅normalizeUrl方法。

使用这些方法(通常使用createUrl)通常会更好,因为它会为您的网站创建有效的网址。

答案 2 :(得分:0)

我有同样的问题(或者类似的)。 我已经使用 renderPartial 来加载视图,稍后在该视图中我使用的是 ajaxLink ,但它无效。

我发现,当使用renderPartial时,没有用于ajax动作的jquery脚本。 你要做的是在renderPartial函数中添加第4个参数(true)来生成jquery脚本。

请参阅文档:http://www.yiiframework.com/doc/api/1.1/CController/#renderPartial-detail

希望它有所帮助并节省时间来解决问题。