我不知道为什么我会这样。如果我浏览
http://www.phillipsenn.com/Matrix/JSON/Upload/Upload.cfc?method=Save&Item=1
然后组件正常工作。 但是,如果我这样做,那么它会要求输入RDS密码。
!function($, window, undefined) {
var local = {};
local.data = {};
local.type= 'post',
local.dataType= 'json',
local.data.method = 'Save';
local.data = {
Item : 'Item One'
}
var myPromise = $.ajax('Upload.cfc',local);
myPromise.done(function(result) {
console.log('success!');
});
myPromise.fail(function(A,B,C) {
$('body').append(A.responseText);
console.log(B);
console.log(C);
});
}(jQuery, window);
最后,这是我的组件:
<cfcomponent>
<cffunction name="Save" access="remote" output="yes">
<cfargument name="Item">
<cfset var local = {}>
<cfquery datasource="#Application.Datasource#" username="#Application.Username#" password="#Application.Password#">
INSERT INTO lru.Clip(ClipDesc) VALUES('test')
</cfquery>
#arguments.Item#
</cffunction>
</cfcomponent>
答案 0 :(得分:3)
菲尔,
我猜不知道你的ajax代码在没有“方法”url param的情况下调用CFC。当它这样做时,CF认为你将尝试“CFC Explorer” - 一个简洁的小工具,可以创建一个类似JFC的Cav描述。如果你只是浏览你的CFC而没有任何url参数,你可以看到它(即使在本地):
http://www.phillipsenn.com/Matrix/JSON/Upload/Upload.cfc
所以有些东西必须随着你的Ajax调用而改变......我认为问题是你最后的陈述......
local.data = {
Item : 'Item One'
}
正在替换它上面的“数据”集.....用一个名为“Item”的结构。当你这样做的时候,你正在丢失一个叫做“方法”的键。尝试:
local.data.Item = 'Item One';