我试图用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