2

我正在使用 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]

4

1 回答 1

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, "&")>

你可以在这里测试它。

于 2018-02-11T05:13:43.243 回答