我使用以下代码放置了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链接?谷歌几个小时但无法解决问题。
任何形式的帮助都非常感谢。
答案 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
希望它有所帮助并节省时间来解决问题。