Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 从调用页访问cfc中方法中的变量_Xml_Solr_Coldfusion - Fatal编程技术网

Xml 从调用页访问cfc中方法中的变量

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

我在cfc中有一个方法,它进行如下的cfhttp调用。cfc有一个问题,我需要调试。我正在使用下面的代码调用该方法进行调试。但是writedump如下图所示。我想知道如何从cfc外部访问local.search_结果,并在调试代码中查看它返回的内容。当我从测试页面直接调用下面的solr引擎时,我会得到如下错误。我以前没有使用过solr、json或xml。如果我错了,请纠正我

<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) />