查询字符串到结构中

a query string into a structure

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

这是我的代码:

<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 = {} />

这就是我调用 url 的方式:

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

但我得到的只是 [empty string]

让我先声明一下我从未使用过 Taffy。但是话虽如此,我认为这与您发布的问题中指定的问题无关。您的代码中有些地方让我感到困惑。

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

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

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

你可以在这里测试一下 here.