在代码点火器中将表单参数附加到url

时间:2012-07-04 07:56:57

标签: forms codeigniter url redirect submission

我尽力搜索一个有问题的现有问题,但却找不到问题。这是我的情况

我有一个名为search的控制器接受参数“搜索词”,当直接从URL调用此控制器时,如www.xyz.com/search/red+car,它返回结果,浏览器地址栏中的URL为www .xyz.com / search / red + car但是当用户从具有相同术语的网页中提交搜索时,结果会很好,但URL不会反映搜索词。

如果我重定向表单POST数据丢失,虽然重新提交POSt也不是我的解决方案。我需要一种方法来更改URL,以便显示搜索词。

在此先感谢您的帮助,请保持温和,因为这是我的第一个问题。

@Vlakarados - 我正在尝试使用相同的控制器来提供来自后期数据和控制器参数的搜索结果。两者都可以正常工作,但在网页上使用搜索表单时,搜索参数不会反映在URL中。

@Rakesh Shetty - 实际的方法很长,但这里是压缩格式 根据发布数据和传递参数构建查询。 用结果填充视图 渲染视图

2 个答案:

答案 0 :(得分:2)

感谢大家提出各种解决方案。

我使用jquery来更改表单操作参数,现在当更改下拉列表选项时,值将附加到action参数。我还从发布数据中删除了下拉列表。

区域内有2个下拉列表,邮编有2个下拉列表。这种新方法适用于机器人下拉菜单,我的控制器代码可以在没有任何重大改变的情况下工作。

当用户更改区域时,我使用以下javascript代码创建新的操作参数。邮政编码也是如此。

$("#cityname").change(function(){
    var action = $(this).val();
    alert(action);
    $("#searchform").attr("action", "search/" + action);
});

我想我无法清楚地解释我的情况,否则你很久以前就会提出这个建议。

答案 1 :(得分:0)

更好的方法是在你的控制器中:

function search($search_query) {

    // .. use your query as you normally would - display products, posts, messages
    $data = array('search_query' => $search_query);
    $this->load->view('search', $data);
}

// use this method as the form action
function search_proxy() {
    $search_query = $this->input->post('search');
    // if needed urlencode or other search query manipulation
    redirect('controller/search/'.$search_query);
}

这样您就没有任何问题,只会使用您网址中的数据。

编辑:第二个选项是使用JavaScript - 当用户提交表单时,更改表单的操作以在表单操作中包含搜索的查询