在PHP中通过$ _GET方法检索值时出现问题

时间:2009-08-31 05:29:09

标签: jquery cakephp href

我有一个链接,点击它时,会调用一个函数。在该函数中,我将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);
   }

3 个答案:

答案 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 ..