2010-11-11 46 views
0

這裏是處理:我發送一個ajax請求到一個coldfusion函數,然後調用同一個組件內的另一個函數。這裏有兩個函數:通過ajax從另一個函數調用一個coldfusion函數來渲染一個錯誤

<!--- test---> 
<cffunction name="deleteMission" access="public" output="No" returntype="struct"> 
<cfscript> 
    var returnData = structNew(); 
    structAppend(returnData, getTest()); 
    returnData.test2 = "test2"; 
</cfscript> 
<cfreturn returnData> 
</cffunction> 

<!--- test2 ---> 
<cffunction name="getTest" access="public" output="No" returntype="struct"> 
<cfscript> 
    var returnData = structNew(); 
returnData.testing = "TEST"; 
</cfscript> 
<cfreturn returnData> 
</cffunction> 

很簡單,在這個例子中只返回2個結構鍵。如果我經常調用方法測試()(即通過coldfusion進行頁面加載),我會得到預期結果。但是,如果我通過AJAX調用方法test(),則會收到錯誤「變量getTest未定義」。如果我刪除對getTest()的調用,那麼我會收到單個結構關鍵字。任何人都知道發生了什麼事?我有一種感覺,這是我忽略的一些簡單的東西,但在這一點上我需要更多的眼球......我真的在這個問題上撓頭。謝謝!

+0

「如果我刪除調用getTest(),我收到了一個關鍵的結構早在預料。」我不明白,你的ajax調用URL是什麼?發佈您的ajax腳本! – Henry 2010-11-11 03:30:12

+0

方法測試()?在你的問題中只有deleteMission()和getTest()。 – Henry 2010-11-11 03:31:33

回答

1

如果您通過AJAX訪問組件,則cffunctionaccess屬性應設置爲remote。例如。

<cffunction name="deleteMission" access="remote" output="No" returntype="struct"> 
-1

將您的getTest更改爲access =「private」。 此外,有時StructAppend方法不會將參數作爲「函數調用」。因此,首先將該值存入變量,然後將該變量發送給deleteMission。

這樣的事情...

var inpData = getTest(); 
structAppend(returnData, inpData);