将查询字符串转换为结构

时间:2018-02-11 03:21:29

标签: coldfusion coldfusion-11 lucee taffy

我正在使用太妃糖,并将一个未知的查询字符串传递给一个函数。我不知道提前传递的查询字符串值,所以我试图在函数中使用它但它不起作用。请指出正确的方向。

这是我的代码:

<cffunction name="qrystringToStruct" returntype="any">
    <cfargument name="myStruct" default="#structNew()#" type="struct">
    <cfargument name="str" required="true" default="">
    <cfscript>
        for(i=1; i LTE listLen(arguments.str,'&');i=i+1) {
        structInsert(myStruct, i, listGetAt(arguments.str,i,'&'));
        }
    </cfscript>
    <cfreturn myStruct>
</cffunction>

<cffunction name="getCourseById" taffy:verb="get" taffy:docs:hide>
  <cfargument name="structurl" type="any" default="" />
  <cfdump var="#structurl#">
 <cfdump var="#qrystringToStruct(structurl)#" abort> 
  <cfset var local = {} />

这就是我调用网址的方式:

http://localhost:9002/taffy/index.cfm//coursesMethods?credits=3&coursetitle=power 

但我得到的只是[empty string]

1 个答案:

答案 0 :(得分:3)

让我先说一下我从未使用太妃糖。但是,据说,我认为这与您发布的问题中指定的问题无关。你的代码中有一些东西让我感到困惑。

  • 您的通话qrystringToStruct(structurl)会传递一个参数,但您的功能定义有两个参数。
  • 为什么要将myStruct声明为参数,然后在<cfreturn myStruct>函数定义中声明qrystringToStruct?这毫无意义。
  • 您说您将完整的网址传递给http://localhost:9002/taffy/index.cfm//coursesMethods?credits=3&coursetitle=power?为什么不使用cgi.QUERY_STRING
  • 传递查询字符串部分

无论如何,我认为你过度复杂了,你不需要自定义函数来解析你的查询字符串。您只需要一行代码。

<cfset qryString = listToArray(cgi.QUERY_STRING, "&")>

您可以在此处测试 here