2014-05-14 89 views
1

我在cfc中創建了一個cfhttp調用方法,如下所示。有一個問題,我需要調試的cfc。我正在使用下面的代碼來調用該方法進行調試。但是,writedump如下圖所示。我想知道如何從我的調試代碼中訪問cfc外部的local.search_result並查看它返回的內容。當我從測試頁面對下面的solr引擎進行直接cfhttp調用時,出現如下錯誤。我以前沒有使用solr或json或xml。所以請糾正我,如果我在這裏錯了。從調用頁面訪問cfc中的方法中的變量

enter image description here

<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="[email protected]" to="[email protected]" 
       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 /> 

在CFHTTP調用的URL是這樣的Solr的服務

http://abcs.def.com:8983/solr/test/select?q=journal_name:congress&rows=100&sort=publish_dt%20desc enter image description here

+0

看起來好像您試圖反序列化不是JSON的字符串。你能顯示錯誤的其餘部分,拋出錯誤的確切代碼嗎? –

+0

嚴格遵守你的散文,你不應該能夠從函數外部訪問函數內的變量。所有的調用代碼都應該能夠看到函數返回的內容。要調試該函數,請使用相同的工具來調試其他任何東西。 cfoutput和cfdump可以讓你看到發生了什麼,但是你必須在函數內部使用它們,然後在你想清楚的時候拿走它們。 –

+0

我在cffunction中嘗試了以查看cfhttp調用的solr url。該頁面沒有中止...任何想法我怎麼能轉儲變量 – user747291

回答

3

通過local.temp_result.fileContent返回的內容顯然是XML通過您的錯誤信息來看,不是JSON,因此deserializeJSON()將無法​​使用它。

您需要使用XmlParse()來代替將基本上看起來像XML的文本塊轉換爲ColdFusion可以使用的實際XML對象。

此:

<cfset local.search_result = deserializeJSON(local.temp_result.fileContent) /> 

應該改爲:

<cfset local.search_result = XmlParse(local.temp_result.fileContent) /> 

看到這些鏈接,瞭解更多信息:


而且我懷疑你isJSON的使用() - 是您filecontent返回true?它看起來像你以前的代碼恢復JSON,現在它返回XML,但你沒有更新你的CF代碼來匹配這個。我還建議用isXML替換isJSON。

相關問題