0

我不知道为什么我会得到这个。如果我浏览到

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>
4

1 回答 1

3

菲尔,

我猜想你的ajax代码在没有“方法”url参数的情况下调用了CFC。当它执行此操作时,该 CF 认为您将尝试“CFC Explorer” - 一个简洁的小工具,可以创建类似于 Javadoc 的 CFC 描述。如果您只是浏览到没有任何 url 参数的 CFC,您可以看到它(即使在本地),如下所示:

http://www.phillipsenn.com/Matrix/JSON/Upload/Upload.cfc

所以你的 Ajax 调用必须改变一些东西......我认为问题是你最后的声明......

local.data = {
    Item : 'Item One'
}

正在用一个名为“Item”的结构替换它上面的“数据”集。当您这样做时,您将丢失称为“方法”的密钥。尝试:

local.data.Item = 'Item One';
于 2012-05-06T00:39:52.197 回答