我試圖用ColdFusion後端拾取AngularJS,並且遇到了一些障礙。我正在用CF Art Gallery數據庫修改他們的「To Do」應用程序http://angularjs.org/。我正嘗試使用AJAX將ColdFusion CFC鏈接到Angular應用程序。AngularJS和ColdFusion CFC
下面是我的artists.cfc:
<cfcomponent>
<cffunction name="getArtists" access="remote" >
<cfargument name="firstName" default="">
<cfargument name="lastName" default="">
<cfquery name="getArtists_sql" datasource="cfartgallery">
SELECT
firstname as text,
lastname as done
FROM artists
WHERE 0=0
<cfif firstName neq "">
AND ucase(firstname) like ucase('%#FIRSTNAME#%')
</cfif>
<cfif lastName neq "">
OR ucase(lastname) like ucase('%#LASTNAME#%')
</cfif>
</cfquery>
<cfreturn getArtists_sql>
</cffunction>
</cfcomponent>
我打電話使用CFC AngularJS用下面的代碼:
function TodoCtrl($scope, $http) {
$http.get('cfc/artists.cfc?method=getArtists&returnformat=json').
success(function (response) {
$scope.todos = data.DATA;
}).
error(function (data) {
$scope.todos = data;
});
}
我知道,我得到響應。下面是JSON字符串Chrome的開發者工具回報我:
{
"COLUMNS":
["TEXT","DONE"],
"DATA":[
["Aiden","Donolan"],
["Austin","Weber"],
["Elicia","Kim"],
["Jeff","Baclawski"],
["Lori","Johnson"],
["Maxwell","Wilson"],
["Paul","Trani"],
["Raquel","Young"],
["Viata","Trenton"],
["Diane","Demo"],
["Anthony","Kunovic"],
["Ellery","Buntel"],
["Emma","Buntel"],
["Taylor Webb","Frazier"],
["Mike","Nimer"]
]}
這看起來並不像他們的演示中使用的符號角:
[
{text:'learn angular', done:true},
{text:'build an angular app', done:false}
]
有人點我到正確的方向,以我如何才能讓這個工作正常工作?理想情況下,我想保持CFC完好無損,以便可以重用於不同的應用程序,因此JSON操作必須在Javascript結束時完成。
究竟是什麼問題?順便說一句,你的成功回調沒有正確引用響應數據。它應該是'function(response){$ scope.todos = response.data.DATA; }'。 – Stewie 2013-02-25 18:29:20
明確指出,我的問題是「我如何將來自AngularJS的TODO教程的信息替換爲來自artist.cfc的信息?我嘗試過'function(response){$ scope.todos = response.data.DATA;} '我得到一個'TypeError:無法讀取屬性'數據'的未定義' – Chester 2013-02-25 18:53:13
我的壞,我誤以'promise.then'顯式'promise.success'方法(它提供數據和狀態參數的回調)方法,該方法向具有data屬性的響應對象提供回調,但在這種情況下,您的回調應該是'function(data){$ scope.todos = data.DATA;}'給定您的實際ajax響應body真的會返回您在答案中發佈的JSON。 – Stewie 2013-02-25 19:13:15