我正在使用太妃糖,并将一个未知的查询字符串传递给一个函数。我不知道提前传递的查询字符串值,所以我试图在函数中使用它但它不起作用。请指出正确的方向。
这是我的代码:
<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]
答案 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 。