我代理的CFC這確實一個ftp「得」到本地臨時文件的調用。然後它讀取文件,並假定將文件內容作爲字符串返回。我知道代碼的工作原理,當我將它從cfc中拉出到一個普通的cfm文件中時,它確實完成了預期的工作。然而,在我代理callBackHandler
,在CFC結果顯示爲空值。下面是代理代碼:爲什麼cfreturn爲空?
<cfajaxproxy cfc="ftpfunc" jsclassname="jsobj" />
function getFTP() {
...
var instance = new jsobj();
instance.setCallbackHandler(ftpSuccess);
instance.setErrorHandler(ftpError);
instance.setReturnFormat('plain');
instance.getJCL(lpar,remoteFile,userName,password);
}
..然後的callbackHandler,這應該從CFC返回的字符串:
function ftpSuccess(ftpReturn)
{
// error thrown right here: "ftpReturn is Null"
if (ftpReturn.length==0)
{ alert("Your FTP Get returned a blank file"); }
}
是否有使用特定的語法?例如,當返回類型是一個結構或查詢,你必須使用類似ftpReturn.DATA
。如何直弦?
感謝所有幫助
編輯:這是CFC
<cffunction name="getJCL" output="false" access="remote" securejson="true">
<cfargument name="lpar" type="string" required="yes">
<cfargument name="remoteFile" type="string" required="yes">
<cfargument name="userName" type="string" required="yes">
<cfargument name="password" type="string" required="yes">
<cfset var ftpReturn = "">
<cfftp action="open"
connection="getConnection"
password="#arguments.password#"
secure="yes"
server="#arguments.lpar#"
stopOnError="no"
timeout="30"
username="#arguments.username#">
<cfset tempFile="D:\myDir\#RandRange(10000000,99999999)#.tmp">
<cfftp action="getFile"
connection="getConnection"
localFile="#tempFile#"
remoteFile="#arguments.remoteFile#"
transferMode="auto">
<cffile action = "read" file = "#tempFile#" variable = "Message">
<cfset ftpReturn = Message>
<cfreturn ftpReturn>
</cffunction>
顯示cfc,以便我們可以看到返回的beig。 – Paul
安裝的Fiddler(http://fiddler2.com)並用它來觀看請求/響應。檢查員(Fiddler UI的右下角四分之一)有一個JSON選項卡,它將顯示正在返回的數據的結構。如果沒有顯示任何內容,請使用RAW選項卡準確顯示服務器返回的內容。這將讓你知道它是否是一個服務器或客戶端的問題 – barnyr
以我的經驗,你得到空值,如果變量被deinstantiated。因此,如果CFFILE讀取長度爲0的文件,則Message可能會將Java指針指向null。 – Salsero69