3

我在我的网站上为我的搜索功能创建了一个分页器。分页器工作得很好,搜索功能也是如此。但是,我遇到的问题是我不得不使用多余的代码来传递表单的值来运行查询。理想情况下,我希望它这样当我按下提交按钮+页面提交时,它将表单中的值作为 URL 变量直接发布到 URL 中,但是目前我正在提交它,检查是否有问题的表单是定义,然后将该值存储到变量中,将该变量通过所有页面链接的 URL 传递,然后将其存储为 URL 变量。我想去掉这个中间人,让它成为一个 URL 变量。有什么建议么?多谢你们。

<cfif IsDefined("form.search")>
    <cfset search = form.search>
</cfif>

<cfquery datasource="test.datasource" name="findbands">
    Select test_band
    From test
    Where test_band LIKE <cfqueryparam value="%#search#%" cfsqltype="cf_sql_varchar" />
</cfquery>


<FORM action="band_search.cfm" method="post">
    <INPUT type="text" name="search"></INPUT>
    <INPUT type="submit" value="Go"></INPUT>
</FORM>

<cfoutput query="findbands" startrow="1" maxrows="10">
    #currentrow#) #test_band#
</cfoutput>

<cfif IsDefined("search")>
    <cfset link = CGI.script_name & "?search=" & search>
    <A href="#link#>Previous</A>
</cfif>

<cfif IsDefined("search")>
    <cfset link = CGI.script_name & "?search=" & search>
    <A href="#link#>Next</A>
</cfif>

我没有在上面演示它,但我有一些代码传递一个 URL 变量,编辑起始行并计算页面总数。然而,这无关紧要。我需要的解决方案是在提交表单时我可以只使用 URL.search 而不必创建变量搜索,如图所示。谢谢。

4

2 回答 2

3

使用“get”而不是“post”的方法。它将所有输入作为 URL 参数附加到操作字符串。

换行:

<FORM action="band_search.cfm" method="post">

到:

<FORM action="band_search.cfm" method="get">
于 2013-02-20T15:41:40.357 回答
3

您可以使用 jQuery 的 POST 表单添加参数,如下所示:

$(".submit").click(function() { 
    //gettting the value
    var search_val = $('input#search').val();
    //add hidden input
    $("#formID").append("<input type='hidden' name='search' value='"+search_val+"' />").submit(); 
});

编辑:

也许这不是更好的方法,但是如果您只是想通过 url 传递参数,您可以在提交表单之前更改表单的操作。

$(".submit").click(function() { 
     //gettting the action of the form
     var action = $("#formID").attr("action");
     //changing the value of the form
     action += "?search="+$('input#search').val();
     //Now submit the form
     $("#formID").attr("action", action ).submit(); 
});

更新:更新您的问题后,我认为您只需要更改POSTGET

于 2013-02-20T15:42:46.697 回答