0

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

3 回答 3

1

可能发生的情况是您更改了 href 属性,但浏览器重定向到旧的未更改的 url,因为您正在处理锚元素的单击。

您可以使用location.href构建 url 字符串,附加参数并将用户直接重定向到它:

$("#export_entries").click(function(e) {
  location.href = $(this).attr("href")+"&id="+formid;
  e.preventDefault();
});
于 2009-08-31T05:32:01.823 回答
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

于 2009-08-31T05:35:46.370 回答
0

我找到了解决我的问题的方法。即使我更改了 JQuery 函数中的 href 属性,浏览器也会被重定向到 CMS 所说的旧网址。但是,如果我提供 location.href,我可以使功能正常工作,但不会加载厚盒。只有当我像我已经完成的那样在链接的 href 属性中设置新的 url 时,才会加载厚框,即

$(this).attr("href","http://localhost/FormBuilder/reports/export?height=220&width=350&id="+formid);

因此,为了动态更改 url,我去更改了该站点中提到的thickbox.js 文件,我们不需要在链接本身中提及 href 属性。我们可以在点击链接后设置href属性,在链接的点击功能中添加行

tb_open_new($(this).attr("href"));

在设置href属性以在thickbox窗口中打开这个更改的url之后..

于 2009-08-31T11:45:12.943 回答