我有一个链接,点击它时,会调用一个函数。在该函数中,我将href属性设置为传递id变量。如果我提醒href值,我会看到正确的URL和Id。但是在控制器中的相应函数中,如果我执行该变量Id的$ _GET,我没有得到该值。错误是什么?
这是我的链接:
<a href="http://localhost/FormBuilder/reports/export?height=220&width=350" id="export_entries" class="thickbox button" title= "Export" >Export</a>
相应的点击功能:
$("#export_entries").click(function() {
$(this).attr("href",$(this).attr("href")+"&id="+formid);
alert($(this).attr("href"));
});
在此警告框中,如果我单击第二个链接,则会将值设为
http://localhost/FormBuilder/reports/export?height=220&width=350&id=2
但是在控制器的导出功能中,我没有得到这个值。变量formid为空。
function export()
{
$formid=$_GET['id'];
echo " formid: ".$formid;
$this->set('formid',$formid);
}
答案 0 :(得分:1)
可能发生的情况是您更改了href属性,但浏览器会重定向到旧的未更改的URL,因为您正在处理锚元素的单击。
您可以使用location.href构建url字符串,附加参数并将用户直接重定向到该字符串:
$("#export_entries").click(function(e) {
location.href = $(this).attr("href")+"&id="+formid;
e.preventDefault();
});
答案 1 :(得分:0)
在CakePHP中,参数的工作方式如下:
http://localhost/FormBuilder/reports/export/height:220/width:350/id:2
而不是
http://localhost/FormBuilder/reports/export?height=220&width=350&id=2
您可以使用
检索控制器中的参数$formid = $this->params['id'];
它们被称为命名参数。进一步阅读:
http://book.cakephp.org/view/541/Named-parameters
http://bakery.cakephp.org/articles/view/passing-named-parameters
答案 2 :(得分:0)
我找到了解决问题的方法。即使我更改了JQuery函数中的href属性,浏览器也会被重定向到CMS所说的旧URL。但是,如果我给location.href,我可以使用该功能,但不会加载thickbox。只有当我在链接的href属性中设置新url时,才会加载thickbox,即,
$(this).attr("href","http://localhost/FormBuilder/reports/export?height=220&width=350&id="+formid);
所以为了动态更改url,我去改变了 this site 中提到的thickbox.js文件,我们不需要在链接本身中提到href属性。我们可以在点击链接后设置href属性,在链接的click功能中添加行
tb_open_new($(this).attr("href"));
设置href属性后,在厚箱窗口中打开此更改的URL ..