Xml 从调用页访问cfc中方法中的变量
我在cfc中有一个方法,它进行如下的cfhttp调用。cfc有一个问题,我需要调试。我正在使用下面的代码调用该方法进行调试。但是writedump如下图所示。我想知道如何从cfc外部访问local.search_结果,并在调试代码中查看它返回的内容。当我从测试页面直接调用下面的solr引擎时,我会得到如下错误。我以前没有使用过solr、json或xml。如果我错了,请纠正我Xml 从调用页访问cfc中方法中的变量,xml,solr,coldfusion,Xml,Solr,Coldfusion,我在cfc中有一个方法,它进行如下的cfhttp调用。cfc有一个问题,我需要调试。我正在使用下面的代码调用该方法进行调试。但是writedump如下图所示。我想知道如何从cfc外部访问local.search_结果,并在调试代码中查看它返回的内容。当我从测试页面直接调用下面的solr引擎时,我会得到如下错误。我以前没有使用过solr、json或xml。如果我错了,请纠正我 <cfscript> myReturn = new cfcs.search().newsearch(crit
<cfscript>
myReturn = new cfcs.search().newsearch(criteria = 'congress', evidence_based_only = 'true');
writedump(myReturn);
</cfscript>
<cfhttp url="#variables.search_url#" result="local.temp_result" /> <!--- may want to add some error-handling here --->
<cfif local.temp_result.statusCode NEQ "200 OK" OR NOT isJSON(local.temp_result.fileContent)>
<!--- Some sort of error - return out with no results --->
<cfmail from="test@acs.com" to="test@sd.r5.com"
subject="bad url"
type="html"
>The following search URL failed on #variables.SVR#: <a href="#variables.search_url#">#variables.search_url#</a></cfmail>
<cfreturn this />
</cfif>
<cfset local.search_result = deserializeJSON(local.temp_result.fileContent) />
<cfset local.max_score = local.search_result.response.maxScore />
<cfset variables.result_cnt = local.search_result.response.numFound />
myReturn=new cfcs.search().newsearch(标准='congress',仅基于证据='true');
writedump(myReturn);
以下搜索URL在#variables.SVR#上失败:
cfhttp调用中的url指向这样的solr服务
根据错误消息判断,
local.temp\u result.fileContent
返回的内容显然是XML,而不是JSON,因此反序列化JSON()
无法使用它
您需要使用XmlParse()
将基本上看起来像XML的文本块转换为ColdFusion可以处理的实际XML对象
这:
应成为:
<cfset local.search_result = XmlParse(local.temp_result.fileContent) />
有关更多信息,请参见以下链接:
此外,我还想问一下您对isJSON()的使用情况——您的filecontent是否返回true?看起来您的代码以前返回JSON,现在返回XML,但您只是没有更新CF代码来匹配它。我还建议将isJSON替换为isXML。似乎您正在尝试反序列化非JSON的字符串。您能否显示错误的其余部分,以及引发错误的确切代码?严格处理您的散文,您不应该能够从函数外部访问函数内部的变量。调用代码应该能够看到函数返回的内容。要调试函数,请使用相同的工具调试其他任何内容。cfoutput和cfdump允许您查看正在发生的事情,但您必须在函数中使用它们,然后在解决问题后将它们拿走。我尝试在cffunction中查看cfhttp调用的solr url。页面没有中止…你知道我还可以怎样转储变量吗?如果页面没有中止,你可能将代码放在了与你调用的函数不同的函数中。或者,可能存在阻止转储/中止执行的某些条件逻辑。
<cfset local.search_result = XmlParse(local.temp_result.fileContent) />